lintcode 鍊錶排序

2021-09-30 14:31:46 字數 1092 閱讀 5362

在 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指向的結點斷鏈,...