LeetCode 排序鍊錶

2021-10-17 10:12:29 字數 1007 閱讀 1900

給你鍊錶的頭結點head,請將其按公升序排列並返回排序後的鍊錶

高階:

示例 1:

輸入:head = [4,2,1,3]

輸出:[1,2,3,4]

示例 2:

輸入:head = [-1,5,3,4,0]

輸出:[-1,0,3,4,5]

示例 3:

輸入:head = 

輸出:

歸併排序

// 將鍊錶拆分為二

listnode head1 =

sortlist

(slow.next)

; slow.next = null;

listnode head2 =

sortlist

(head)

;return

merge

(head1, head2);}

// 將兩個有序鍊錶進行合併

public listnode merge

(listnode head1, listnode head2)

else

curdummynode = curdummynode.next;

}while

(head1 != null)

while

(head2 != null)

return dummynode.next;

}}

leetcode 鍊錶排序

對鍊錶排序,用歸併排序。題目要求空間時間複雜度為o nlogn 但是空間複雜度為o 1 1.自己寫的程式,時間複雜度為o nlogn 但是空間複雜度為o n 用快慢指標 分別走2步和1步 找到中間節點。但是最後排序的部分,用複製將排好序的部分貼上會原來鍊錶中,這個方法比較笨,而且增加空間複雜度,並不...

leetcode 鍊錶 排序

思路 使用歸併排序。拆分 合併均採用遞迴方式。public listnode sortlist listnode head pre.next null return merge sortlist head sortlist slow public listnode merge listnode l1...

leetcode 排序鍊錶

利用歸併排序的思想,不過這裡排序的不是列表,是乙個鍊錶。具體 如下 definition for singly linked list.class listnode object def init self,x self.val x self.next none class solution obj...