leetcode - Sort List
来源:互联网 发布:js页面加载时执行函数 编辑:程序博客网 时间:2024/05/16 05:48
Sort a linked list in O(n log n) time using constant space complexity.
/** * Definition for singly-linked list. * struct ListNode { * int val; * ListNode *next; * ListNode(int x) : val(x), next(NULL) {} * }; *///时间复杂度O(nlogn),空间复杂度O(1),可以用归并排序来实现.//如果想实现归并排序,那么怎么确定list的中间的位置,可以假设两个指针p1,p2,且p2移动的距离是p1的两倍,那么当p2指向最后一个元素,p1指向中间.//通过上面的方法可以确定中间位置,然后利用归并解决问题。struct ListNode{int val;ListNode *next;ListNode(int x) : val(x), next(NULL) {};};class Solution {private:ListNode *mergeSort(ListNode *head){if(head == NULL || head->next == NULL) return head;ListNode *first = head,*second = head;ListNode *mid = head;while(second != NULL && second->next != NULL){second = second->next->next;mid = first;first = first->next;}mid->next = NULL;return merge(mergeSort(head),mergeSort(first));}ListNode * merge(ListNode *la, ListNode *lb){ListNode *tmp = new ListNode(0);ListNode *p = tmp;while(la != NULL && lb != NULL){if(la->val <= lb->val){p->next = la;la = la->next;}else{p->next = lb;lb = lb->next;}p = p->next;}if(la != NULL) p->next = la;else if(lb != NULL) p->next = lb;ListNode *lc = tmp->next;delete tmp;return lc;}public: ListNode *sortList(ListNode *head) {return mergeSort(head); }};
0 0
- [leetcode][list][sort] Sort List
- Insertion Sort List | leetcode
- Leetcode: Insertion Sort List
- [LeetCode] Insertion Sort List
- Leetcode: Insertion Sort List
- Leetcode: Sort List
- Sort List | leetcode
- leetcode-Sort List
- leetcode-Insertion Sort List
- LeetCode题解:Sort List
- leetcode 134: Sort List
- [LeetCode]Sort List
- [LeetCode]Insertion Sort List
- [LeetCode] Sort List
- 【LeetCode】Insertion Sort List
- leetCode - Sort List
- LeetCode | Insertion Sort List
- LeetCode - Insertion Sort List
- Core Graphics : 弧线和轨迹
- HowTo: Installation of Qt 5.0.1 and Qwt 6.1.0 rc3 (Win7 64bit)(转)
- 光滑的UIButton
- Android-制作activity悬浮框
- RabbitMQ学习(八)Access Control访问控制
- leetcode - Sort List
- 租谞族谞转注浊座咨捉罪左爪
- 他地图就有今天都已经有
- 归并排序 merge sort
- UIView中动画及其属性说明
- IOS-UIDynamic-UIKit动力学(整合版)
- LeetCode: Best Time to Buy and Sell Stock
- 【安卓篇】线程间通信之Message
- 快速排序 quick sort