Sort a linked list using insertion sort.
My Answer:
<span style="font-size:14px;">/**
* 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) {
if(head == null){
return head;
}
ListNode pivot = head.next;
ListNode newHead = head;
newHead.next = null;
while(pivot != null){
ListNode newPivot = newHead;
ListNode pre = newPivot;
while(newPivot != null){
if(pivot.val <= newPivot.val){
ListNode temp = pivot.next;
if(newHead == newPivot){
pivot.next = newHead;
newHead = pivot;
}else{
pivot.next = pre.next;
pre.next = pivot;
}
pivot = temp;
break;
}
pre = newPivot;
newPivot = newPivot.next;
}
if(newPivot == null){
pre.next = pivot;
pivot = pivot.next;
pre.next.next = null;
}
}
return newHead;
}
}</span>
题目来源: https://oj.leetcode.com/problems/insertion-sort-list/