Insertion Sort List Leetcode java
2017-08-14 22:41
423 查看
题目:
Sort a linked list using insertion sort.
题解:
Insertion Sort就是把一个一个元素往已排好序的list中插入的过程。
初始时,sorted list是空,把一个元素插入sorted list中。然后,在每一次插入过程中,都是找到最合适位置进行插入。
因为是链表的插入操作,需要维护pre,cur和next3个指针。
pre始终指向sorted list的fakehead,cur指向当前需要被插入的元素,next指向下一个需要被插入的元素。
当sortedlist为空以及pre.next所指向的元素比cur指向的元素值要大时,需要把cur元素插入到pre.next所指向元素之前。否则,pre指针后移。最后返回fakehead的next即可。
代码如下:
Sort a linked list using insertion sort.
题解:
Insertion Sort就是把一个一个元素往已排好序的list中插入的过程。
初始时,sorted list是空,把一个元素插入sorted list中。然后,在每一次插入过程中,都是找到最合适位置进行插入。
因为是链表的插入操作,需要维护pre,cur和next3个指针。
pre始终指向sorted list的fakehead,cur指向当前需要被插入的元素,next指向下一个需要被插入的元素。
当sortedlist为空以及pre.next所指向的元素比cur指向的元素值要大时,需要把cur元素插入到pre.next所指向元素之前。否则,pre指针后移。最后返回fakehead的next即可。
代码如下:
public ListNode insertionSortList(ListNode head) { if(head == null||head.next == null) return head; ListNode sortedlisthead = new ListNode(0); ListNode cur = head; while(cur!=null){ ListNode next = cur.next; ListNode pre = sortedlisthead; while(pre.next!=null && pre.next.val<cur.val) pre = pre.next; cur.next = pre.next; pre.next = cur; cur = next; } return sortedlisthead.next; }
相关文章推荐
- LeetCode147_Insertion Sort List(用插入排序算法对链表进行排序) Java题解
- [Leetcode] Insertion Sort List (Java)
- Insertion Sort List Leetcode java
- LeetCode 147 — Insertion Sort List(C++ Java Python)
- [Leetcode][JAVA] Insertion Sort List
- 【LeetCode-面试算法经典-Java实现】【147-Insertion Sort List(链表插入排序)】
- LeetCode:Insertion Sort List (Java)
- Java for LeetCode 147 Insertion Sort List
- leetcode 147 Insertion Sort List java 算法
- 【Leetcode】Insertion Sort List
- Insertion Sort List[LeetCode]
- LeetCode 148之Sort List的java题解
- LeetCode---Insertion Sort List
- leetCode(4):Insertion Sort List 分类: leetCode 2015-06-17 09:42 205人阅读 评论(0) 收藏
- [LeetCode 147] Insertion Sort List
- LeetCode | Insertion Sort List
- [C++]LeetCode: 126 Insertion Sort List (插入排序链表)
- LeetCode:Insertion Sort List
- LeetCode Insertion Sort List
- leetcode insertion-sort-list