描述
給定乙個單鏈表和數值x,劃分鍊錶使得所有小於x的節點排在大於等於x的節點之前。
你應該保留兩部分內煉表節點原有的相對順序。
您在真實的面試中是否遇到過這個題?
樣例給定鍊錶 1->4->3->2->5->2->null,並且 x=3
返回 1->2->2->4->3->5->null
題目鏈結
分析
方法一:將所有小於給定值的節點取出組成乙個新的鍊錶,此時原煉表中剩餘的節點的值都大於或等於給定值,只要將原鍊錶直接接在新鍊錶後即可。
方法二:這道題要求我們劃分鍊錶,把所有小於給定值的節點都移到前面,大於該值的節點順序不變,相當於乙個區域性排序的問題。那麼可以想到的一種解法是首先找到第乙個大於或等於給定值的節點,用題目中給的例子來說就是先找到4,然後再找小於3的值,每找到乙個就將其取出置於4之前即可。
程式
/**
* definition of singly-linked-list:
* class listnode
* }*/class solution
else
}p->next = dummp->next;
return newdummp->next;
/*//方法二
if(head == null)
return 0;
listnode * dummp = new listnode(-1);
dummp->next = head;
listnode * pre = dummp, * cur = head;//dummp申請的目的是有乙個pre
while(pre->next && pre->next->val < x) pre = pre->next;//一直找到第乙個大於x的數
cur = pre;
while(cur->next)
else
}return dummp->next;*/}
};
演算法 鍊錶 鍊錶分隔(鍊錶劃分)
給定乙個鍊錶和乙個特定值 x,對鍊錶進行分隔,使得所有小於 x 的節點都在大於或等於 x 的節點之前。你應當保留兩個分割槽中每個節點的初始相對位置。示例 輸入 head 1 4 3 2 5 2,x 3 輸出 1 2 2 4 3 5 兩個臨時頭結點和尾節點,組成兩個鍊錶,分別存放較小和較大節點 完成後...
LintCode 鍊錶劃分
容易 鍊錶劃分 檢視執行結果 29 通過 給定乙個單鏈表和數值x,劃分鍊錶使得所有小於x的節點排在大於等於x的節點之前。你應該保留兩部分內煉表節點原有的相對順序。您在真實的面試中是否遇到過這個題?yes 樣例 給定鍊錶 1 4 3 2 5 2 null,並且 x 3 返回 1 2 2 4 3 5 n...
LintCode 鍊錶劃分
題目描述 給定乙個單鏈表和數值x,劃分鍊錶使得所有小於x的節點排在大於等於x的節點之前。你應該保留兩部分內煉表節點原有的相對順序。樣例 給定鍊錶 1 4 3 2 5 2 null,並且 x 3 返回 1 2 2 4 3 5 null 思路分析 題意搞懂了就很簡單了。ac definition of ...