LeetCode解题报告:Insertion Sort List
2014-06-12 16:38
176 查看
Insertion Sort List
Sort a linked list using insertion sort.leetcode subject
思路:
标准的插入排序。考察一下链表的操作。
对链表进行插入排序的正确方法是:新建一个头节点,遍历原来的链表,对原链表的每个节点找到新链表中适合插入位置的前指针,然后执行插入操作。
这种操作链表的题的技巧是:新建一个dummy作为head node,然后把数据插入到dummy的链表中,最后返回dummy.next。
链表的插入排序图示:
注意头结点和头指针的不同,注意用了多少个指针。
1.需要插入排序的链表和带有head node的排好序的链表:寻找到节点插入的位置pre。
2.在pre后面插入节点node(val =4 )
3.开始遍历下一个node(val =2 )。
题解:
/** * Definition for singly-linked list. * public class ListNode { * int val; * ListNode next; * ListNode(int x) { * val = x; * next = null; * } * } */ public class Solution { public ListNode insertionSortList(ListNode head) { // dummy is dummy head node,not head pointer. ListNode dummy = new ListNode(-1); ListNode pre, newNext; ListNode oldNext; while (head != null) { oldNext = head.next; pre = searchInsertPosition(dummy, head.val); newNext = pre.next; pre.next = head; head.next = newNext; head = oldNext; } return dummy.next; } private ListNode searchInsertPosition(ListNode headNode, int val) { ListNode pre = headNode; ListNode nex = pre.next; while ((nex != null) && (nex.val <= val)) { pre = nex; nex = nex.next; } return pre;// inserted position is after pre node. } }
相关文章推荐
- LeetCode: Insertion Sort List 解题报告
- Leetcode Insertion Sort List 解题报告
- Leetcode Insertion Sort List 解题报告
- [LeetCode OJ] Insertion Sort List 解题报告
- leetCode解题报告之Insertion Sort List
- 【LeetCode】Insertion Sort List 解题报告
- LeetCode—Insertion Sort List 解题报告
- Insertion Sort List
- Insertion Sort List
- insertion-sort-list
- LeetCode—Insertion Sort List
- Insertion Sort List[LeetCode]
- Insertion Sort List
- Insertion Sort List
- Merge Sort Array --> Merge Sort Linked List --> Insertion Sort Array --> Insertion sort Linked List
- Leetcode_insertion-sort-list
- LeetCode(147) Insertion Sort List
- LeetCode----Insertion sort list
- LeetCode | Insertion Sort List
- 插入排序(Insertion Sort List)