LeetCode | 148. Sort List
題目:
Given the head
of a linked list, return the list after sorting it in ascending order.
Follow up: Can you sort the linked list in O(n logn)
time and O(1)
memory (i.e. constant space)?
Example 1:
Input: head = [4,2,1,3] Output: [1,2,3,4]
Example 2:
Input: head = [-1,5,3,4,0] Output: [-1,0,3,4,5]
Example 3:
Input: head = [] Output: []
Constraints:
- The number of nodes in the list is in the range
[0, 5 * 104]
. -105 <= Node.val <= 105
程式碼:
/**
* Definition for singly-linked list.
* struct ListNode {
* int val;
* ListNode *next;
* ListNode(int x) : val(x), next(NULL) {}
* };
*/
class Solution {
public:
void swap(int& a, int& b) {
int tmp = a;
a = b;
b = tmp;
return;
}
ListNode* getPartition(ListNode* head, ListNode* end) {
ListNode *key = head, *p = head, *cur = head->next;
while(cur != end)
{
if(cur->val < key->val)
{
p = p->next;
swap(cur->val, p->val);
}
cur = cur->next;
}
swap(key->val, p->val);
return p;
}
void sort(ListNode* head, ListNode* end) {
if(head == end)
return;
ListNode* partition = getPartition(head, end);
sort(head, partition);
sort(partition->next, end);
}
ListNode* sortList(ListNode* head) {
if(head == NULL || head->next == NULL)
return head;
sort(head, NULL);
return head;
}
};
相關文章
- [LeetCode] 148. Sort ListLeetCode
- LeetCode | 147. Insertion Sort ListLeetCode
- Leetcode Sort ColorsLeetCode
- Leetcode Sort ArrayLeetCode
- [LeetCode] 280. Wiggle SortLeetCode
- List排序Collections.sort 重寫compare排序
- [LeetCode] 451. Sort Characters By FrequencyLeetCode
- LeetCode之Sort Array By Parity(Kotlin)LeetCodeKotlin
- Mac文字排序編輯工具:Magic Sort ListMac排序
- python用List的內建函式list.sort進行排序Python函式排序
- [LeetCode] 61. Rotate ListLeetCode
- LeetCode | 141 linked list cycleLeetCode
- Leetcode 61. Rotate ListLeetCode
- Java面試-List中的sort詳細解讀Java面試
- [leetcode]linked-list-cycle-iiLeetCode
- Leetcode 206. Reverse Linked ListLeetCode
- Leetcode 234. Palindrome Linked ListLeetCode
- LeetCode 382 Linked List Random NodeLeetCoderandom
- 75. Sort Colors(Leetcode每日一題-2020.10.07)LeetCode每日一題
- 148. 排序連結串列排序
- LeetCode 452. Minimum Number of Arrows to Burst Balloons Sort/MediumLeetCode
- LeetCode之Odd Even Linked List(Kotlin)LeetCodeKotlin
- [LeetCode] 328. Odd Even Linked ListLeetCode
- Leetcode 142. Linked List Cycle IILeetCode
- LeetCode - Easy - 206. Reverse Linked ListLeetCode
- Leetcode 203. Remove Linked List ElementsLeetCodeREM
- Leetcode 237. Delete Node in a Linked ListLeetCodedelete
- LeetCode 138. Copy List with Random PointerLeetCoderandom
- LeetCode | 203. Remove Linked List ElementsLeetCodeREM
- [LeetCode] 430. Flatten a Multilevel Doubly Linked ListLeetCode
- Leetcode 19 Remove Nth Node From End of ListLeetCodeREM
- [LeetCode] 2487. Remove Nodes From Linked ListLeetCodeREM
- LeetCode 83. Remove Duplicates from Sorted ListLeetCodeREM
- [LeetCode] 109. Convert Sorted List to Binary Search TreeLeetCode
- Java for LeetCode 109 Convert Sorted List to Binary Search TreeJavaLeetCode
- Insertion Sort and Merge Sort
- LeetCode C++ 1464. Maximum Product of Two Elements in an Array【Array/Sort】簡單LeetCodeC++
- LeetCode Remove Nth Node From End of List(019)解法總結LeetCodeREM