首页 > 代码库 > insertion Sort List (链表的插入排序) leecode java
insertion Sort List (链表的插入排序) leecode java
逻辑简单,代码难写,基础不劳,leecode写注释不能出现中文,太麻烦,我写了大量注释,链表问题最重要的就是你那个指针式干啥的
提交地址https://oj.leetcode.com/problems/insertion-sort-list/
/** * 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 h=new ListNode(-1000000); //加入头结点方面,特别适合头结点不断改变的情况,c++要释放掉,java直接返回头的next就可 h.next=head; ListNode cur=head.next; //cur 保存当前处理的节点 head.next=null; //别忘了,新链表的尾巴值为空 while(cur!=null) { ListNode nextNode=cur.next; //保存下一个要处理的点,因为cur会被插入的新链表中,所以保存,然后赋给cur(最后一句) ListNode l=h.next; ListNode pre=h; while(l!=null) //找到合适的插入位置,找pre地址 { if(l.val<=cur.val) { pre=l; l=l.next; } else { break; } } //insert into the list cur.next=pre.next; pre.next=cur; cur=nextNode; } return h.next; } }
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。