python 排序鍊錶

2021-10-09 13:13:17 字數 1096 閱讀 2404

題目描述:

在 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 不考慮...