/*
思路是 建立一个list 用于存放新的sort list
两个循环 第一个循环 用于遍历原来的list
第二个循环每次从新的list的头开始 找到应该insert的位置
*/
/**
* Definition for singly-linked list.
* public class ListNode {
* int val;
* ListNode next;
* ListNode(int x) { val = x; }
* }
*/
class Solution {
public ListNode insertionSortList(ListNode head) {
if(head == null) return head;
ListNode sortList = new ListNode(0);//先建立一个空的list用于储存新的list;
ListNode oldNode = head;
while(oldNode != null) {
ListNode next = oldNode.next;//后面的操作会把oldnode插入新的list中 所以在这里先把 next的位置拿到;
ListNode temp = sortList;//第二层循环每次都从新list 的头开始遍历 所以在这 初始化temp;
//因为需要找到insert的位置是大于lodnode值得前一位 所以这里用next取寻找
while(temp.next != null && temp.next.val < oldNode.val) {
temp = temp.next;
}
oldNode.next = temp.next;//insert;
temp.next = oldNode;//insert;
oldNode = next;
}
return sortList.next;
}
}
Insertion Sort List
最新推荐文章于 2020-05-18 10:42:02 发布