景岁的Leetcode解题报告:147.Insertion Sort List (Java)
来源:互联网 发布:局域网办公软件 编辑:程序博客网 时间:2024/05/01 12:34
这道题要求的是对链表进行插入排序,算是一道简单的考察链表操作的题目。其中的难点在于未排序节点插入已排序节点时的三种不同情况:
1已排序部分头结点就大于要插入值 2已排序部分最后一节点还小于要插入值 3中间情况:要插入值在已排序值中间
下面的程序在插入排序的内层循环中,对上面三种情况进行分别处理:
/** * 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 lh=head; ListNode rh=head.next; head.next=null; ListNode temp1=null; ListNode temp2=null; //外围循环 while(rh!=null){ lh=head; //内层循环 while(lh.val<rh.val&&lh!=null&&lh.next!=null){ temp1=lh; lh=lh.next; } //保存现在rh.next的值,因为一会rh指针会指向别处 temp2=rh.next; //对内层while语句中三种不满足条件的情况分别进行处理:1已排序最后一位还小于要插入值 2头结点就大于要插入值 3要插入值在已排序值中间 if(lh.next==null&&lh.val<rh.val){ lh.next=rh; rh.next=null; } else if(head.val>=rh.val){ head=rh; head.next=lh; } else{ temp1.next=rh; rh.next=lh; } //将rh置为刚才保存在temp2中的rh.next rh=temp2; } return head; }}
0 0
- 景岁的Leetcode解题报告:147.Insertion Sort List (Java)
- [leetcode] 147. Insertion Sort List 解题报告
- [Leetcode] 147. Insertion Sort List 解题报告
- LeetCode—Insertion Sort List 解题报告
- Leetcode Insertion Sort List 解题报告
- leetCode解题报告之Insertion Sort List
- Leetcode Insertion Sort List 解题报告
- [LeetCode OJ] Insertion Sort List 解题报告
- 【LeetCode】Insertion Sort List 解题报告
- [LeetCode] 147. Insertion Sort List java
- [Leetcode] Insertion Sort List (Java)
- LeetCode:Insertion Sort List (Java)
- Insertion Sort List Leetcode java
- [LeetCode]Sort List,解题报告
- LeetCode Sort List 解题报告
- Leetcode Sort List 解题报告
- LeetCode 解题报告 Sort List
- LeetCode Sort List 解题报告
- as3遍历当前显示对象
- 说话的艺术
- Yii 表单输入数据保存不成功
- UVa 10278 - Fire Station
- 整数的立方和
- 景岁的Leetcode解题报告:147.Insertion Sort List (Java)
- 安装Chromium浏览器并添加Flash插件Pepper Flash Player
- 关于ExpandableListView用法
- OC语言注意事项
- 自除整数
- 解决coral模板的google font 问题
- Q7.1.1 把一个数组里的数的组合全部列出
- [补充一]3D视频
- Linux进程实时IO监控iotop命令详解