分隔鍊錶 雙指標操作

2021-10-04 08:13:21 字數 847 閱讀 3548

給定乙個鍊錶和乙個特定值 x,對鍊錶進行分隔,使得所有小於 x 的節點都在大於或等於 x 的節點之前。

你應當保留兩個分割槽中每個節點的初始相對位置。

輸入示例: head = 1->4->3->2->5->2, x = 3

輸出示例:1->2->2->4->3->5

c++結構體:

/** * definition for singly-linked list.

* struct listnode

* };

*/ c++函式形式: listnode*

partition

(listnode* head,

int x)

要保證前面的元素都比x小,後面的元素都比x大,且相對的位置不變,我們只需要使用兩個指標,小的元素往第乙個裡面新增,大的往第二個裡面新增,最後再合併起來就可以了。

需要注意的地方:

class

solution

else

head=head-

>next;

} after-

>next=

null

; before-

>next=maxx-

>next;

return minx-

>next;}}

;

atfwus --writing by 2020–03–24

《雙指標》86 分隔鍊錶《leetcode》

難度中等279 給定乙個鍊錶和乙個特定值x,對鍊錶進行分隔,使得所有小於 x 的節點都在大於或等於 x 的節點之前。你應當保留兩個分割槽中每個節點的初始相對位置。示例 輸入 head 1 4 3 2 5 2,x 3 輸出 1 2 2 4 3 5建立兩個頭節點beforehead,afterhead,...

鍊錶雙指標的應用

在乙個煉表裡使用兩個指標,可以實現一些操作 如尋找鍊錶中倒數第k個結點,尋找中間位置結點,判斷鍊錶有沒有環,以及如何找到環的入口 include includetypedef struct node node typedef node pnode int countnum void createno...

分隔鍊錶(鍊錶 LeetCode)

題目鏈結 給你乙個鍊錶和乙個特定值 x 請你對鍊錶進行分隔,使得所有小於 x 的節點都出現在大於或等於 x 的節點之前。你應當保留兩個分割槽中每個節點的初始相對位置。示例 輸入 head 1 4 3 2 5 2,x 3 輸出 1 2 2 4 3 5維護兩個鍊錶,乙個鍊錶儲存比x小的結點,另乙個鍊錶儲...