算法系列——Sort List
来源:互联网 发布:淘宝网中老年女冬装 编辑:程序博客网 时间:2024/06/05 11:08
题目描述
Sort a linked list in O(n log n) time using constant space complexity.
解题思路
这道题要求我们对链表进行排序,采用分治法的策略,递归的对链表左右两块进行排序即可。其实就是归并排序的思路。
两个重要操作
1.快慢指针分割链表
2.合并操作操作。
程序实现
public class Solution { public ListNode sortList(ListNode head) { //边界 if(head==null||head.next==null) return head; //找到中间节点 ListNode slow=head; ListNode fast=head; while(fast.next!=null&&fast.next.next!=null){ slow=slow.next; fast=fast.next.next; } fast=slow.next; slow.next=null; //递归调用 ListNode p1=sortList(head); ListNode p2=sortList(fast); return mergeList(p1,p2); } private ListNode mergeList(ListNode p1,ListNode p2){ if(p1==null) return p2; if(p2==null) return p1; ListNode dummyHead=new ListNode(-1); ListNode p=dummyHead; while(p1!=null&&p2!=null){ if(p1.val<p2.val){ p.next=p1; p1=p1.next; } else{ p.next=p2; p2=p2.next; } p=p.next; } if(p1!=null) p.next=p1; else if(p2!=null) p.next=p2; return dummyHead.next; } }
阅读全文
0 0
- 算法系列——Sort List
- STL源码系列--List::sort算法解析
- 算法系列——Sort Colors
- LeetCode—Sort List
- LeetCode148—Sort List
- STL学习——list中的sort算法
- 算法系列——Reverse Linked List
- 算法系列——Linked List Cycle
- 算法系列——Rotate List
- 算法系列——Reorder List
- 算法系列——Partition List
- STL list::sort算法
- LeetCode——Sort List
- LeetCode —— Sort List
- LeetCode——Sort List
- LeetCode—Insertion Sort List
- Algorithms—148.Sort List
- 【STL】算法 — sort
- STL算法之复制 移动 填充 归并 替换
- 从HBase删除所有Trafodion表
- Keras 例程lmdb_lstm.py理解
- c#引用类型变量在程序中的变化
- Android 单选组合框
- 算法系列——Sort List
- Spring的AOP
- jQuery 学习笔记
- 向贺老师学C语言—求三数最大值
- 盗梦空间
- python -decorators
- wampserver一直离线状态,localhost没用
- 基于.NET CORE微服务框架 -谈谈surging的服务容错降级
- 电脑常用问题集