您的位置:首页 > 编程语言 > Java开发

Insertion Sort List Leetcode java

2017-08-14 22:41 423 查看
题目:

Sort a linked list using insertion sort.

 

题解:

 Insertion Sort就是把一个一个元素往已排好序的list中插入的过程。

 初始时,sorted list是空,把一个元素插入sorted list中。然后,在每一次插入过程中,都是找到最合适位置进行插入。

 因为是链表的插入操作,需要维护pre,cur和next3个指针。

 pre始终指向sorted list的fakehead,cur指向当前需要被插入的元素,next指向下一个需要被插入的元素。

 

 当sortedlist为空以及pre.next所指向的元素比cur指向的元素值要大时,需要把cur元素插入到pre.next所指向元素之前。否则,pre指针后移。最后返回fakehead的next即可。

 

代码如下:

public ListNode insertionSortList(ListNode head) {
if(head == null||head.next == null)
return head;
ListNode sortedlisthead = new ListNode(0);
ListNode cur = head;
while(cur!=null){
ListNode next = cur.next;
ListNode pre = sortedlisthead;
while(pre.next!=null && pre.next.val<cur.val)
pre = pre.next;
cur.next = pre.next;
pre.next = cur;
cur = next;
}
return sortedlisthead.next;
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: