链表的排序
来源:互联网 发布:大数据项目知识点 编辑:程序博客网 时间:2024/05/18 03:18
题目描述
Sort a linked list in O(n log n) time using constant space complexity.
由于限制了时间复杂度,所以选择使用归并排序
/** * 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; 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; slow = sortList(head); fast = sortList(fast); head = mergeSort(slow,fast); return head; } public ListNode mergeSort(ListNode head1,ListNode head2){ if(head1==null) return head2; if(head2 ==null) return head1; ListNode head=null; if(head1.val>head2.val){ head = head2; head.next = mergeSort(head1,head2.next); }else{ head = head1; head.next = mergeSort(head1.next,head2); } return head; }}
0 0
- 链表的一种排序---冒泡排序
- 链表的排序
- 链表的排序
- 链表的排序 .
- 链表的排序
- 链表的排序
- 链表的排序
- 链表的排序
- 链表的排序
- 链表的排序
- 链表的排序
- 链表的排序
- 链表的排序
- 链表的排序
- 链表的排序
- 链表的排序
- C++基于链表 指针的插入排序,冒泡排序,选择排序,计数排序
- 双向链表的排序
- NVIDIA Jetson TK1学习与开发——安装cuda和opencv
- codeforces 711D. Directed Roads 找环
- C++正则表达式使用实例--实现一个markdown代码标记转换工具
- ReplaceBlank
- translate函数的用法
- 链表的排序
- POJ 3304 直线与线段相交的判断
- Google APAC 2017 University Test Round B
- LeetCode练习与总结
- iOS基础知识点
- 文章标题
- 欢迎使用CSDN-markdown编辑器
- 关于ubuntu浏览器模糊不清的解决方法
- java web 02 关于JSP跳转中request共享问题