Sort List
来源:互联网 发布:免费mv制作软件 编辑:程序博客网 时间:2024/05/19 23:54
1.题目
在 O(n log n) 时间复杂度和常数级的空间复杂度下给链表排序。
给出 1->3->2->null
,给它排序变成 1->2->3->null
.
2.算法
这道题我们可以用归并排序,归并排序需要找到链表中点,我们用两个指针,开始的时候分别指向开头,然后一个指针一次跳一个位置,另一个跳两个位置,当走的快的到尾后,走的慢的也到了中间。然后我们在进行排序
public ListNode sortList(ListNode head) { return mergeSort(head); } public ListNode mergeSort(ListNode head){if (head == null || head.next == null){return head;}//找中点ListNode walker = head;ListNode runner = head;while(runner.next != null && runner.next.next != null){walker = walker.next;runner = runner.next.next;}ListNode head2 = walker.next;walker.next = null;ListNode head1 = head;//归并return merge(mergeSort(head1), mergeSort(head2));}public ListNode merge(ListNode head1, ListNode head2){ListNode helper = new ListNode(0);helper.next = head1;ListNode pre = helper;while (head1 != null && head2 != null){if (head1.val < head2.val){head1 = head1.next;}else{ListNode next = head2.next;head2.next = pre.next;pre.next = head2;head2 = next;}pre = pre.next;}if (head2 != null){pre.next = head2;}return helper.next;}
0 0
- list sort
- list sort
- Sort List
- Sort List
- list - sort
- Sort List
- Sort List
- Sort List
- Sort List
- Sort List
- Sort List
- Sort List
- Sort List
- Sort List
- Sort List
- Sort List
- Sort List
- Sort List
- usaco3.2.4 Feed Ratios
- @Autowired与@Resource的区别
- Idea导入Tomcat源码
- 小鑫の日常系列故事(七)——小纸条
- Linux下Vim的常用命令
- Sort List
- todo list201612
- POJ 1986 Distance Queries 已翻译
- 异常大全
- MyBatis(4):动态SQL
- 慧鑫系统(一)
- 如何在 Linux 中复制文件到多个目录中
- 《C++ Primer Plus(第六版)》(24)(第十二章 类和动态内存分配 编程题和答案)
- Linux下的atime mtime ctime及如何用touch来修改