您的位置:首页 > 其它

LeetCode 147. Insertion Sort List

2018-01-20 22:34 399 查看

问题描述

https://leetcode.com/problems/insertion-sort-list/description/

Sort a linked list using insertion sort.

问题分析

给定一个链表,对这个链表进行插入排序。

步骤:

第一个:是从原有的链表中取出一个节点。

第二步:在排序后的链表中找出对应节点的位置

第三步:将取出的节点插入到对应的链表中去。

代码实现

public ListNode insertionSortList(ListNode head) {
ListNode helper = new ListNode(0);
//使用两个指针指向旧和新的两个链表
ListNode oldPoint = head;
ListNode newPoint = helper;
ListNode temp = null;
while (oldPoint != null) {
temp = oldPoint;
//开始寻找位置
newPoint = helper;
while (newPoint.next != null && newPoint.next.val <= oldPoint.val) {
newPoint = newPoint.next;
}
oldPoint = oldPoint.next;
temp.next = newPoint.next;
newPoint.next = temp;
}
return helper.next;

}


总结

在查找插入的位置的时候。需要用找到上一个节点的位置。这里的处理方式是使用了一个Helper节点来做头节点。

对于取出节点的时候,务必需要用一个单独的指针来指引。同时将之前的关系给切断。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: