【LeetCode】Sort List
来源:互联网 发布:知乎怎么公共编辑问题 编辑:程序博客网 时间:2024/06/15 19:36
题目
Sort a linked list in O(n log n) time using constant space complexity.
解答
O(nlogn)时间复杂度的排序有快排、堆排、归并,一般双向链表用快排、单向链表用归并,堆排两种都可以,以下使用归并排序:
/** * Definition for singly-linked list. * class ListNode { * int val; * ListNode next; * ListNode(int x) { * val = x; * next = null; * } * } *///归并排序public class Solution { public ListNode sortList(ListNode head) { if(head==null||head.next==null){ return head; }else{ //快慢指针找到中间点 ListNode fast=head; ListNode slow=head; while(fast.next!=null&&fast.next.next!=null){ fast=fast.next.next; slow=slow.next; } fast=slow; //注意修改fast和slow的值,若当其为一个节点时,就不会调用sortList slow=slow.next; fast.next=null; fast=sortList(head); //前半段排序 slow=sortList(slow); //后半段排序 return mergeArray(fast,slow); } } ListNode mergeArray(ListNode list1,ListNode list2){ if(list1==null){ return list2; } if(list2==null){ return list1; } ListNode mergeList=null; if(list1!=null&&list2!=null){ if(list1.val<list.val){ mergeList=list1; list1=list1.next; mergeList.next=null; }else{ mergeList=list2; list2=list2.next; mergeList.next=null; } } ListNode tempList=mergeList; while(list1!=null&&list2!=null){ if(list1.val<list2.val){ tempList.next=list1; list1=list1.next; tempList=tempList.next; tempList.next=null; }else{ tempList.next=list2; list2=list2.next; tempList=tempList.next; tempList.next=null; } } if(list1!=null){ tempList.next=list1; } if(list2!=null){ tempList.next=list2; } return mergeList; }}
---EOF---
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
- android 控件之checkbox自定义样式
- Windows CE内存管理
- JSP详细篇——Java Web的数据库操作
- Codeforces Round #280 (Div. 2) 解题报告 A.B.C.D.E.
- 【Android】Android Studio的安装
- 【LeetCode】Sort List
- 华兴资本
- 一切成功源于积累——20141203 26时间 美瑞的反思 80个 0.1手 夜里12小时只波动60点
- 大数加法
- 又是一年大雪时,母校腊梅依傲然
- 8602 区间相交问题(贪心)
- Kettle工具的使用指南
- 一个简单的指针指向问题的讨论
- 4.Swift-集合类型