86 分隔鍊錶

2021-10-13 19:02:49 字數 812 閱讀 9313

86. 分隔鍊錶

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

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

示例:

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

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

分析:整理題意,要求將所有小於3的值放在所有大於等於3的節點前,也就是是放在第乙個大於等於3的節點前,這正好符合佇列先進先出的特性,我們可以使用兩個佇列分別儲存小於x的和大於等於x的兩組值,然後先將小於x的節點鏈成鍊錶,再接上大於等於x的節點即可。

不過呢,其實佇列本身是沒有必要存在的,直接用兩個分組用的鍊錶,最後相連即可,但是需要關注鍊錶節點本身next帶有值,需要將隊尾的next變為null,並且保證在遍歷過程中不能斷鏈。

/**

* definition for singly-linked list.

* struct listnode

* };

*/class solution else

l = l->next;

}l = head = new listnode(-1);

while( !less.empty() )

while( !more.empty() )

head -> next = null;

return l->next;

}};

86 分隔鍊錶

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

86 分隔鍊錶

給定乙個鍊錶和乙個特定值 x,對鍊錶進行分隔,使得所有小於 x 的節點都在大於或等於 x 的節點之前。你應當保留兩個分割槽中每個節點的初始相對位置。示例 輸入 head 1 4 3 2 5 2,x 3 輸出 1 2 2 4 3 5 方法 遍曆法 思路 定義兩個新鍊錶,head鍊錶逐個開頭遍歷,大於等...

86 分隔鍊錶

本來想用快慢指標做的,就像面試題02.04,交換節點的值,但是這樣不能保證每個結點的初始相對位置,於是就只能構造兩個鍊錶large和small,分別存放大於x的節點和小於x的節點,再把兩個鍊錶拼接起來。definition for singly linked list.struct listnode...