在 o(n log n) 時間複雜度和常數級的空間複雜度下給鍊錶排序。
您在真實的面試中是否遇到過這個題?
yes
樣例給出1->3->2->null
,給它排序變成1->2->3->null
.
/*** definition for listnode.
* public class listnode
* }思路:
歸併排序
* 根據要求採用先sort再merge的方法,
* 1.首先找到中點,
* 2.然後從中點兩端分別sort,
* 3.將兩個結果進行merge。
*/public class solution
//當fast.next.next為空,slow為中點
return slow;
}
public listnode merge(listnode head1, listnode head2) else
tail = tail.next;
}//l2或l1可能還有未處理的結點,直接加在尾部即可
if (head1 != null) else
return dummy.next;}/*
public listnode merge(listnode l1, listnode l2)
if(l2 == null)
if(l1.val < l2.val)else
return head;
}*/public listnode sortlist(listnode head)
listnode mid = findmiddle(head);
//需要把左半鍊錶的尾結點的next賦空值
//(斷開),用乙個變數來記錄右半鍊錶的頭
listnode nextpart = null;
if(mid !=null)
listnode left = sortlist(head);
listnode right = sortlist(nextpart);
return merge(left,right);}}
LintCode 鍊錶排序
鍊錶排序 在 o n log n 時間複雜度和常數級的空間複雜度下給鍊錶排序。您在真實的面試中是否遇到過這個題?yes 樣例給出1 3 2 null,給它排序變成1 2 3 null.挑戰 標籤 相關題目 definition for listnode.public class listnode p...
LintCode 鍊錶插入排序
1.描述 用插入排序對鍊錶排序 樣例 given1 3 2 0 null,return0 1 2 3 null 2.分析 插入排序是十分常見的排序方式之一,類似於陣列的插入排序,此題是關於鍊錶的插入排序。原題給定乙個以head為頭節點的鍊錶,下面再新建乙個有序的dummy鍊錶,通過把head鍊錶 中...
LintCode 鍊錶插入排序
用插入排序對鍊錶排序 樣例 given 1 3 2 0 null,return 0 1 2 3 null 解題思路 用temp移動,指向head指向的下乙個結點。用while迴圈判斷指標指向的下乙個位址不為空,如果新建的鍊錶指向的結點的值小於原鍊錶指向的結點的值,就向下移動,head指向的結點斷鏈,...