Sort List
来源:互联网 发布:经济学推荐书籍 知乎 编辑:程序博客网 时间:2024/06/16 08:28
------QUESTION------
Sort a linked list in O(n log n)time using constant space complexity.
------SOLUTION------
class Solution {public: ListNode *sortList(ListNode *head) { if(!head || !head->next ) return head; return quickSort(head)[0]; } vector< ListNode* > quickSort(ListNode *head){ vector< ListNode* > ret; if(!head->next) { ret.push_back(head); ret.push_back(head); return ret; } ListNode* headSmaller = NULL; ListNode* headGreater = NULL; ListNode* current = head->next; ListNode* prev = head; ListNode* tmp; while(current){ if(current->val > head->val){ prev->next = current->next; if(!headGreater){ headGreater = current; headGreater->next = NULL; } else{ current->next = headGreater->next; headGreater->next = current; } current = prev->next; } else if(current->val < head->val){ prev->next = current->next; if(!headSmaller){ headSmaller = current; headSmaller->next = NULL; } else{ current->next = headSmaller->next; headSmaller->next = current; } current = prev->next; } else { prev = current; current = current->next; } } vector< ListNode* > retGreater; vector< ListNode* > retSmaller; if(headSmaller) { retSmaller = quickSort(headSmaller); retSmaller[1]->next = head; ret.push_back(retSmaller[0]); } else ret.push_back(head); if(headGreater){ retGreater = quickSort(headGreater); prev->next = retGreater[0]; ret.push_back(retGreater[1]); } else ret.push_back(prev); return ret; }};
0 0
- list sort
- list sort
- Sort List
- Sort List
- list - sort
- Sort List
- Sort List
- Sort List
- Sort List
- Sort List
- Sort List
- Sort List
- Sort List
- Sort List
- Sort List
- Sort List
- Sort List
- Sort List
- Reorder List
- 新手如何学习C#、ASP.NET
- LRU Cache
- GeoGeo大数据集
- Insertion Sort List
- Sort List
- LeetCode: Remove Duplicates from Sorted Array
- Max Points on a Line
- GeoGeo Master-Slave窗口事件
- 单例与static函数
- ARMHF versus ARMEL
- Catalogue of leetcode
- Android Sensor 移植
- 红黑树系列二:红黑树的插入