leetcode 147. 对链表进行插入排序
对链表进行插入排序。
插入排序的动画演示如上。从第一个元素开始,该链表可以被认为已经部分排序(用黑色表示)。
每次迭代时,从输入数据中移除一个元素(用红色表示),并原地将其插入到已排好序的链表中。
插入排序算法:
插入排序是迭代的,每次只移动一个元素,直到所有元素可以形成一个有序的输出列表。
每次迭代中,插入排序只从输入数据中移除一个待排序的元素,找到它在序列中适当的位置,并将其插入。
重复直到所有输入数据插入完为止。
示例 1:
输入: 4->2->1->3
输出: 1->2->3->4
代码
/*** Definition for singly-linked list.* public class ListNode {* int val;* ListNode next;* ListNode(int x) { val = x; }* }*/
class Solution {public ListNode insertionSortList(ListNode head) {ListNode dumpy=new ListNode(Integer.MIN_VALUE);dumpy.next=head;ListNode pre=dumpy;while (head!=null)//遍历所以节点{ListNode temp=dumpy.next,curPre=dumpy;boolean change=false;while (temp!=head)//从当头节点到当前节点查找放置的位置{if(head.val<=temp.val)//将当前节点连到合适位置{pre.next=head.next;head.next=temp;curPre.next=head;change=true;break;}curPre=temp;temp=temp.next;} if(change)//当前节点已经变化位置的情况{head=pre.next;}else {//不需要变化位置的情况pre=head;head=head.next;}}return dumpy.next;}
}
leetcode 147. 对链表进行插入排序相关推荐
- 插入排序 链表 java_Java实现 LeetCode 147 对链表进行插入排序
147. 对链表进行插入排序 对链表进行插入排序. 插入排序的动画演示如上.从第一个元素开始,该链表可以被认为已经部分排序(用黑色表示). 每次迭代时,从输入数据中移除一个元素(用红色表示),并原地将 ...
- LeetCode 147. 对链表进行插入排序(链表)
1. 题目 对链表进行插入排序. 插入排序的动画演示如上.从第一个元素开始,该链表可以被认为已经部分排序(用黑色表示). 每次迭代时,从输入数据中移除一个元素(用红色表示),并原地将其插入到已排好序的 ...
- Leetcode 147. 对链表进行插入排序 解题思路及C++实现
解题思路: 这道题目,如果不借助其它stl工具,只是使用本身的ListNode的话,最主要的一个问题是,每次找插入位置的时候,没有办法进行从后往前回溯,所以只能从head头结点往后比较,然后找出应当插 ...
- Leetcode 147.对链表进行排序
对链表进行插入排序 对链表进行插入排序. 插入排序算法: 插入排序是迭代的,每次只移动一个元素,直到所有元素可以形成一个有序的输出列表. 每次迭代中,插入排序只从输入数据中移除一个待排序的元素,找到它 ...
- 147. 对链表进行插入排序嗯嗯对的
对链表插入排序,可以用两个指针p, q进行往后取结点操作: 开始如果head为空,直接返回NULL即可: 否则,让p指向head,q始终为p的下一个指针,这样每次对p操作后还能更新p为操作前的下一个指 ...
- C#LeetCode刷题-链表
链表篇 # 题名 刷题 通过率 难度 2 两数相加 29.0% 中等 19 删除链表的倒数第N个节点 29.4% 中等 21 合并两个有序链表 C#LeetCode刷题之#21-合并两个有序链 ...
- LeetCode 147. Insertion Sort List 链表插入排序 C++/Java
LeetCode 147. Insertion Sort List 链表插入排序 C++/Java Sort a linked list using insertion sort. A graphic ...
- LeetCode自我总结(对链表进行插入排序)
对链表进行插入排序. 插入排序的动画演示如上.从第一个元素开始,该链表可以被认为已经部分排序(用黑色表示). 每次迭代时,从输入数据中移除一个元素(用红色表示),并原地将其插入到已排好序的链表中. 插 ...
- python 对链表进行插入排序
对链表进行插入排序 插入排序算法:插入排序是迭代的,每次只移动一个元素, 直到所有元素可以形成一个有序的输出列表. 每次迭代中,插入排序只从输入数据中移除一个待排序的元素,找到它在序列中适当的位置,并 ...
最新文章
- Manning、Ostendorf、Povey、何晓冬、周明共话多模态NLP的机遇和挑战(附视频)
- tomcat主目录(ROOT.xml)和虚拟目录
- GAN作用——在我做安全的看来,就是做数据拟合、数据增强
- Delphi从Internet下载文件
- 根据年 -月查询这个月的第一天和最后一天
- requests模块发送带headers的Get请求和带参数的请求
- 每日一笑 | 史上最贴心的骗子
- CF1000G. Two-Paths(树形dp)
- QtCreate不能使用代码提示功能
- jsp源码oracle数据库,JSP与oracle数据库交互案例
- Laravel核心解读--Database(三) 模型CRUD
- Visual Studio Debug Practice
- 模拟封装ajax,模拟jQ封装ajax,调用时出现Uncaught ReferenceError: param is
- 电商数据分析与数据化运营
- 迅雷离线下载脚本 — LinuxTOY
- RepVGG:算法简介及repvgg.py代码解析
- Maya cmds pymel 快速选择hard edges(硬边)
- 2.大型网站架构演化的价值观
- 计算机网络上不去的原因是什么,路由器有信号却上不了网是什么原因?
- XGBoost原理介绍