Sort List问题及解法
来源:互联网 发布:jsmd5解密算法 编辑:程序博客网 时间:2024/05/18 21:07
问题描述:
Sort a linked list in O(n log n) time using constant space complexity.
问题分析:
根据题意,归并法的时间复杂度为O(n log n) ,故采用归并法求解。求解过程中最重要是如何将链表均分成两组,这里采用双指针法。
过程详见代码:
/** * Definition for singly-linked list. * struct ListNode { * int val; * ListNode *next; * ListNode(int x) : val(x), next(NULL) {} * }; */class Solution {public: ListNode* sortList(ListNode* head) {if (head == NULL || head->next == NULL) return head;ListNode* prev = NULL, *slow = head, *fast = head;while (fast != NULL &&fast->next != NULL){prev = slow;slow = slow->next;fast = fast->next->next;}prev->next = NULL;ListNode* l1 = sortList(head);ListNode* l2 = sortList(slow);return merge(l1, l2);}ListNode* merge(ListNode* h1, ListNode* h2){if (h1 == NULL){return h2;}if (h2 == NULL){return h1;}if (h1->val < h2->val){h1->next = merge(h1->next, h2);return h1;}else{h2->next = merge(h1, h2->next);return h2;}}};
阅读全文
0 0
- Sort List问题及解法
- Insertion Sort List问题及解法
- Sort Colors问题及解法
- Rotate List问题及解法
- Partition List问题及解法
- Reorder List问题及解法
- Sort Characters By Frequency问题及解法
- Linked List Cycle问题及解法
- Palindrome Linked List问题及解法
- Reverse Linked List II问题及解法
- Linked List Cycle II问题及解法
- Linked List Random Node问题及解法
- Odd Even Linked List问题及解法
- Flatten Nested List Iterator问题及解法
- Remove Nth Node From End of List问题及解法
- Remove Duplicates from Sorted List问题及解法
- Remove Duplicates from Sorted List II问题及解法
- Convert Sorted List to Binary Search Tree问题及解法
- 浅谈java集合之间区别
- stm32的modbus主机,读取电表等
- 1055: 兔子繁殖问题
- JavaScript权威指南读书笔记——第十章 正则表达式
- (13)2017.8.14-集合框架(泛型)
- Sort List问题及解法
- Javascript如何改变对象的原型
- 建立bond的几种参数
- tableView 的常规效果:传统和内边距的设定
- QuartzManager 定时器管理
- 433和2.4G无线通信比较
- 算法复杂度计算O(N)
- 使用scrapy 抓取顶点小说
- 18. 4Sum