Sort-----148. Sort List
来源:互联网 发布:苏州app软件开发 编辑:程序博客网 时间:2024/06/06 13:01
原题目
题目就是把一个链表在nlgn的时间内使用常数空间排序。
第一次尝试,明知道不会过,但是就是想写写链表的选择排序
public ListNode sortList(ListNode head) { ListNode p = head; ListNode q = head; while (p != null) { q = p.next; while (q != null) { int temp = p.val; if (q.val < temp) { p.val = q.val; q.val = temp; } q = q.next; } p = p.next; } return head; }
第二次使用的类库Collections
虽然通过,但是实在是,。,没意思。
public ListNode sortList(ListNode head) { ListNode p = head; List<Integer> result = new ArrayList<>(); visit(p, result); Collections.sort(result); for (int i = 0; i < result.size(); i++) { p.val = result.get(i); p = p.next; } return head; } public void visit(ListNode head, List<Integer> result) { ListNode p = head; while (p != null) { result.add(p.val); p = p.next; } }
第三种终极做法就是归并排序
链表的归并排序
public ListNode sortList(ListNode head) { if (head == null || head.next == null) { return head; } ListNode mid = getMidListNode(head); ListNode list2 = mid.next; mid.next = null; return mergeList(sortList(head), sortList(list2)); } private ListNode mergeList(ListNode list1, ListNode list2) { ListNode dummyHead = new ListNode(0); ListNode curr = dummyHead; while (list1 != null && list2 != null) { if (list1.val < list2.val) { curr.next = list1; list1 = list1.next; } else { curr.next = list2; list2 = list2.next; } curr = curr.next; } curr.next = list1 != null ? list1 : list2; return dummyHead.next; } private ListNode getMidListNode(ListNode head) { ListNode slow = head, fast = head; while (fast.next != null && fast.next.next != null) { slow = slow.next; fast = fast.next.next; } return slow; }
阅读全文
0 0
- Sort-----148. Sort List
- LeetCode 148. Sort List
- [LeetCode]148.Sort List
- 148. Sort List
- [leetcode] 148.Sort List
- 148. Sort List
- 148. Sort List LeetCode
- Leetcode 148. Sort List
- 148. Sort List
- 148. Sort List
- 148. Sort List
- 148. Sort List
- 148. Sort List
- 148. Sort List
- LeetCode *** 148. Sort List
- 148. Sort List
- LeetCode 148. Sort List
- 148. Sort List
- hdu6162 Ch’s gift
- PS入门-01-矩形选择框基础操作
- python链接Mysql数据库
- 关于运维招聘技能包总结
- 在同一个类中,一个方法调用另外一个有注解(比如@Async,@Transational)的方法,注解失效的原因和解决方法
- Sort-----148. Sort List
- SQL注入之sqlmap爆破sqli-labs-master
- MyBatis(3)--MyBatis一些概念
- mybatis-使用原始dao
- 日期差值
- 获取git仓库
- gulp构建
- MVG读书笔记——三维空间中的射影几何(二)
- 启明之星