问答文章1 问答文章501 问答文章1001 问答文章1501 问答文章2001 问答文章2501 问答文章3001 问答文章3501 问答文章4001 问答文章4501 问答文章5001 问答文章5501 问答文章6001 问答文章6501 问答文章7001 问答文章7501 问答文章8001 问答文章8501 问答文章9001 问答文章9501

LeetCode-对链表进行插入排序

发布网友 发布时间:2024-09-25 15:47

我来回答

1个回答

热心网友 时间:2024-10-04 12:40

算法记录

LeetCode 题目:

?  给定单个链表的头?head?,使用?插入排序?对链表进行排序,并返回?排序后链表的头?。

<hr style=" border:solid; width:100px; height:1px;" color=#000000 size=1">

说明一、题目

&emsp;&emsp;插入排序是迭代的,每次只移动一个元素,直到所有元素可以形成一个有序的输出列表。

&emsp;&emsp;每次迭代中,插入排序只从输入数据中移除一个待排序的元素,找到它在序列中适当的位置,并将其插入。

&emsp;&emsp;重复直到所有输入数据插入完为止。

输入: head = [4,2,1,3]输出: [1,2,3,4]二、分析

和一般的数组的插入排序差不多,只是需要处理好对应的节点的相关连接关系。

因为有可能会涉及到第一个节点的变动更新,因此我们添加一个虚拟的头结点来替换现有头结点,这样就能保证整个过程中都用考虑头部节点的变化。

遍历整个链表的同时需要记录前一个节点的信息,因为这个是判断当前节点是否不满足序列一致的重要标记。一旦出现破坏排序结果的情况,就需要从链表的头开始遍历查找能够容纳当前节点的位置。

维护节点结束之后需要重置下一个节点的位置信息,或者说没有发生破坏序列的情况就正常的将节点进行向前移动。

class Solution {public ListNode insertionSortList(ListNode head) {ListNode hair = new ListNode(-10000, head), t1 = hair, t2 = hair.next;while(t2 != null) {if(t1.val > t2.val) {t1.next = t2.next;ListNode temp = hair;while(temp.next.val < t2.val) {temp = temp.next;}t2.next = temp.next;temp.next = t2;t2 = t1.next;} else {t1 = t1.next;t2 = t2.next;}}return hair.next;}}

<hr style=" border:solid; width:100px; height:1px;" color=#000000 size=1">

总结

链表节点的抽象处理。

原文:https://juejin.cn/post/7098300942033895431

热心网友 时间:2024-10-04 12:38

算法记录

LeetCode 题目:

?&emsp;&emsp;给定单个链表的头?head?,使用?插入排序?对链表进行排序,并返回?排序后链表的头?。

<hr style=" border:solid; width:100px; height:1px;" color=#000000 size=1">

说明一、题目

&emsp;&emsp;插入排序是迭代的,每次只移动一个元素,直到所有元素可以形成一个有序的输出列表。

&emsp;&emsp;每次迭代中,插入排序只从输入数据中移除一个待排序的元素,找到它在序列中适当的位置,并将其插入。

&emsp;&emsp;重复直到所有输入数据插入完为止。

输入: head = [4,2,1,3]输出: [1,2,3,4]二、分析

和一般的数组的插入排序差不多,只是需要处理好对应的节点的相关连接关系。

因为有可能会涉及到第一个节点的变动更新,因此我们添加一个虚拟的头结点来替换现有头结点,这样就能保证整个过程中都用考虑头部节点的变化。

遍历整个链表的同时需要记录前一个节点的信息,因为这个是判断当前节点是否不满足序列一致的重要标记。一旦出现破坏排序结果的情况,就需要从链表的头开始遍历查找能够容纳当前节点的位置。

维护节点结束之后需要重置下一个节点的位置信息,或者说没有发生破坏序列的情况就正常的将节点进行向前移动。

class Solution {public ListNode insertionSortList(ListNode head) {ListNode hair = new ListNode(-10000, head), t1 = hair, t2 = hair.next;while(t2 != null) {if(t1.val > t2.val) {t1.next = t2.next;ListNode temp = hair;while(temp.next.val < t2.val) {temp = temp.next;}t2.next = temp.next;temp.next = t2;t2 = t1.next;} else {t1 = t1.next;t2 = t2.next;}}return hair.next;}}

<hr style=" border:solid; width:100px; height:1px;" color=#000000 size=1">

总结

链表节点的抽象处理。

原文:https://juejin.cn/post/7098300942033895431
声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com
小鹏交付怎么评分 2024年5月趋乾黄道吉日 2024年5月哪天适合趋乾 2024年6月词讼黄道吉日 2024年6月哪天适合词讼 2024年8月成服黄道吉日 2024年8月哪天适合成服 2024年8月26日黄道吉日 百度识图在线识别这个人是 百度怎样识别明星是谁? 海绵城市都建什么 包钢股票前景如何 600010包钢股份这支股票我现在被套百分之六了,后市该怎么操作,适合做长 ... 做营养早餐粥的方法有什么? 早餐营养粥做法大全 营养早餐粥做法大全 笔记本高性能模式中cpu最高状态,用qq管家跑分跑完独显以后cpu频率降低... 笔记本CPU温度太高(一个75一个48),波动太大(玩游戏5秒之内50度飚70+... 天下足球-贝影-专集中有一首好听的歌,忘了叫什么了,需球迷解答!_百度... 五谷杂粮有哪些粮食 五谷杂粮有哪些谷 喔刷POS机是不是正规的啊? 喔刷pos机是真的吗? ...当时以为是眼花了就没怎么注意。可是今天去上厕所时 明天早上我都要上一次大厕所,爱边玩手机边上,我没用劲大便就出来的很... ...小心拿手机的时候把护身符掉出来了,旁边是蹲盆,蹲盆里还有大便... 开餐厅需要办哪些证件 餐饮证件有哪些证件 微信朋友圈怎么发送带画的图片啊? 海贼王312中17分钟放的歌叫什么,太感人了,就是烧梅利的时候 想知道海贼王312到313集之间梅利号火焰吞没时的背景曲.天空还下着雪... 新鲜的柚子皮怎么做好吃 求海贼王312《感谢你梅丽,离别之海》日文,以及插曲dear friends,邮箱w... 有什么早餐粥的做法大全分享? 五谷杂粮是哪5种带拼音 五谷是哪5种? 著名动漫声优? 有哪些日本动画片的声优阵容很豪华? 多轴自动打螺丝机 初中生早餐吃什么能提高记忆力 早餐营养搭配食谱大全 记忆力衰退吃什么好 EXCEL里面如何自动刷选删除 数列中没有数量的,横列具体如图 ...我现在也不知道自己想要什么,你不要逼我太紧,什么意思? ...我现在也不知道自己想要什么,你不要逼我太紧什么意思? ...我现在也不知道自己想要什么你不要逼我太紧,我该怎么做? 埃塞俄比亚帝国的历史变迁 埃塞俄比亚营的介绍 南京彩礼和嫁妆都有什么 南京吃五红的风俗及寓意 准新人必读:南京订婚习俗 末雨绸缪是什么意思(“未雨绸缪”是什么意思) 淘宝老客户破零怎么玩?淘宝客破零怎么玩?