首页 > 代码库 > LeetCode Insertion Sort List

LeetCode Insertion Sort List

Sort a linked list using insertion sort.

题目意思是用插入排序对单链表进行排序,做法是返回一个新的单链表,每次插入的时候都添加一个新建的节点。

/** * 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 || head.next==null) {        return head;       }       ListNode first = new ListNode(head.val);       ListNode curr = head.next;       ListNode last = first,temp=first;              while (curr!=null) {        if (curr.val>=last.val) {            ListNode newlast = new ListNode(curr.val);            last.next=newlast;            last=newlast;        }else {            if (first.val>=curr.val) {                ListNode newfirst=new ListNode(curr.val);                newfirst.next=first;                first=newfirst;            }else {                temp=first;                while (curr.val>temp.val&&curr.val>temp.next.val) {                    temp=temp.next;                }                ListNode newmiddle = new ListNode(curr.val);                newmiddle.next=temp.next;                temp.next=newmiddle;            }        }            curr=curr.next;    }       return first;    }}

 

LeetCode Insertion Sort List