題目描述:
在 o(n log n) 時間複雜度和常數級空間複雜度下,對鍊錶進行排序。
示例 1:
輸入: 4->2->1->3
輸出: 1->2->3->4
示例 2:
輸入: -1->5->3->4->0
輸出: -1->0->3->4->5
class listnode(object):
'''定義建立鍊錶節點的類'''
def __init__(self, val, next = none):
self.val = val
self.next = next
def sort_linked_list(head):
# 分而治之,歸併演算法,涉及到鍊錶排序的,可以考慮合併兩個鍊錶的方法
# 合併兩個鍊錶
def merge_two_linked_list(l1, l2):
if not l1:
return l2
if not l2:
return l1
if l1.val < l2.val:
cur = l1
cur.next = merge_two_linked_list(l1.next, l2)
else:
cur = l2:
cur.next = merge_two_linked_list(l1, l2.next)
return cur
if not head or not head.next:
return head
slow, fast = head, head.next
while fast and fast.next:
slow, fast = slow.next, fast.next.next
mid, slow = slow.next, none
left = sort_linked_list(head)
right = sort_linked_list(mid)
return merge_two_linked_list(left, right)
python鍊錶 鍊錶重新排序
輸入 1 2 3 4 5 6 7 輸出 1 7 2 6 3 5 4 或者輸入 1 2 3 4 5 6 輸出 1 6 2 5 3 4 思路 1.將1 2 3 4 5 6 7分成 1 2 3 與 4 5 6 7,將後半部分逆序7 6 5 4 2.合併1 2 3與7 6 5 4 為1 7 2 6 3 5 ...
鍊錶 排序鍊錶
樂扣原題 definition for singly linked list.public class listnode class solution 將鍊錶轉化為陣列 listlist new arraylist while null head 陣列遞增排序 collections.sort li...
鍊錶 鍊錶排序 中等
描述 在 o n log n 時間複雜度和常數級的空間複雜度下給鍊錶排序。您在真實的面試中是否遇到過這個題?樣例給出 1 3 2 null,給它排序變成 1 2 3 null.挑戰分別用歸併排序和快速排序做一遍。題目鏈結 分析快速排序 演算法只交換節點的val值,平均時間複雜度o nlogn 不考慮...