Leetcode 148 排序鍊錶

2021-09-06 08:55:21 字數 1019 閱讀 3779

在 o(n log n) 時間複雜度和常數級空間複雜度下,對鍊錶進行排序。

示例 1:

輸入: 4->2->1->3

輸出: 1->2->3->4

示例 2:

輸入: -1->5->3->4->0

輸出: -1->0->3->4->5

在陣列儲存下的歸併排序,需要借出輔助空間完成,而鍊錶儲存的歸併排序,不需要借助輔助空間,直接在原來的鍊錶上進行操作,分的過程借助快慢指標,將鍊錶從中間切開,然後需要斬斷左邊和右邊的聯絡,進行歸併排序。這是一段很經典的**

/**

* definition for singly-linked list.

* struct listnode

* };

*/class solution

listnode* mergesort(listnode* head)

pre->next = null; // 剪斷鍊錶

listnode* left = mergesort(head); // 對前半段鍊錶進行分治

listnode* right = mergesort(p); // 對後半段鍊錶進行分治

return merge(left,right); // 對左煉表和右鍊錶進行合併

}listnode* merge(listnode* left, listnode* right) // 對左煉表和右鍊錶進行合併

else

}if(left!=null)

current->next = left;

if(right!=null)

current->next = right;

return dummyhead->next;

}};

LeetCode 148 排序鍊錶

在 o n log n 時間複雜度和常數級空間複雜度下,對鍊錶進行排序。示例 1 輸入 4 2 1 3輸出 1 2 3 4示例 2 輸入 1 5 3 4 0輸出 1 0 3 4 5歸併這裡我感覺有點不符合題意 不符合常數空間 如果是快排的話呢,交換節點還是很麻煩的,所以快排交換值了 癱.jpg cl...

leetcode148 排序鍊錶

在 o n log n 時間複雜度和常數級空間複雜度下,對鍊錶進行排序。示例 1 輸入 4 2 1 3 輸出 1 2 3 4 示例 2 輸入 1 5 3 4 0 輸出 1 0 3 4 5 看到題目就知道要二分,這裡用的是遞迴版歸併 definition for singly linked list....

LeetCode 148 排序鍊錶

在 o n log n 時間複雜度和常數級空間複雜度下,對鍊錶進行排序。示例 1 輸入 4 2 1 3 輸出 1 2 3 4 示例 2 輸入 1 5 3 4 0 輸出 1 0 3 4 5借助乙個排序演算法來進行實現,因為要求在o n log n 時間複雜度下進行排序,選擇歸併排序 思路 在整個鍊錶進...