給定乙個鍊錶和乙個特定值 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小的結點,另乙個鍊錶儲...