給出乙個鍊錶和乙個值x,以x為參照將鍊錶劃分成兩部分,使所有小於x的節點都位於大於或等於x的節點之前。
兩個部分之內的節點之間要保持的原始相對順序。
例如:
給出1->4->3->2->5->2和x = 3,
返回1->2->2->4->3->5
<?php
class node
}function partition($head, $x) else
}$node->next = $largenode->next;
return $smallnode->next;
}$node1 = new node(1);
$node2 = new node(4);
$node3 = new node(3);
$node4 = new node(2);
$node5 = new node(5);
$node6 = new node(2);
$node1->next = $node2;
$node2->next = $node3;
$node3->next = $node4;
$node4->next = $node5;
$node5->next = $node6;
$retnode = partition($node1, 3);
while ($retnode != null)
《leetCode php》鍊錶內部部分反轉
將乙個鍊錶m位置到n位置之間的區間反轉,要求使用原地演算法,並且在一次掃瞄之內完成反轉。例如 給出的鍊錶為1 2 3 4 5 null,m 2 n 4,返回1 4 3 2 5 null.注意 給出的m,n滿足以下條件 1 m n 鍊錶長度 class node function reversebet...
鍊錶分割問題
題目 編寫 以給定的x為基準值將鍊錶分割成兩部分,所有小於x的結點排在大於或等於x的結點之前。解法一 交換結點法,回想學習快速排序的時候,也是以基準值將一組數劃分成兩部分,小於基準值的排在前面,大於基準值的排在後半部分。因此解決這個問題也可以使用兩個指標。如果煉表頭結點開始遍歷,第乙個需要移動的結點...
11 鍊錶分割
編寫 以給定值x為基準將鍊錶分割成兩部分,所有小於x的結點排在大於或等於x的結點之前 給定乙個鍊錶的頭指標 listnode phead,請返回重新排列後的鍊錶的頭指標。注意 分割以後保持原來的資料順序不變。public listnode partition listnode phead,int x...