LeetCode 分隔鍊錶

2021-09-11 01:13:14 字數 1276 閱讀 8156

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

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

示例:

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

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

思路分析:本題主要就是一句節點的val的大小進行分類,小於x的放一邊,大於、等於的放一邊,最後將兩個合起來就行。其實還是比較好解決的。

方法一:可能有些道友認為節點的移動涉及到比較「高深」的指標問題,這裡首先介紹一種利用佇列輔助的演算法。

就是用兩個佇列,分別儲存兩種分類,最後重寫鍊錶即可。(這種演算法不涉及到節點的移動)(時間複雜度o(n),額外空間複雜度o(n))

/**

* definition for singly-linked list.

* struct listnode

* };

*/class

solution

else

p = p-

>next;

} p = head;

//重寫鍊錶

//首先寫beforequeue

while

(!beforequeue.

empty()

)//再寫afterqueue

方法二:根據val的大小直接將節點進行分成兩類,最後將兩段鍊錶拼接在一起。(時間複雜度o(n),額外空間複雜度o(1))

分隔鍊錶(鍊錶 LeetCode)

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

LeetCode 分隔鍊錶

給定乙個鍊錶和乙個特定值x,對鍊錶進行分隔,使得所有小於 x 的節點都在大於或等於 x 的節點之前。你應當保留兩個分割槽中每個節點的初始相對位置。示例 輸入 head 1 4 3 2 5 2,x 3 輸出 1 2 2 4 3 5借助兩個輔助鍊錶實現即可,然後合併兩個鍊錶。如下 definition ...

Leetcode 分隔鍊錶

給定乙個鍊錶和乙個特定值 x,對鍊錶進行分隔,使得所有小於 x 的節點都在大於或等於 x 的節點之前。你應當保留兩個分割槽中每個節點的初始相對位置。示例 輸入 head 1 4 3 2 5 2,x 3 輸出 1 2 2 4 3 5 使用兩個偽頭部來記錄小於x的鍊錶和大於等於x的鍊錶 最後再將兩個鍊錶...