Leetcode147. 对链表进行插入排序

【中等】力扣算法题解析LeetCode147:对链表进行插入排序 本文介绍了链表的插入排序算法实现。通过创建虚拟头节点简化操作,维护已排序区间指针lastSorted和待处理节点指针curr。算法核心是将当前节点与已排序部分比较:若大于等于则直接追加,否则从头遍历找到插入位置。实现中使用了三个指针(dummy、lastSorted、curr)完成节点的移动和插入,时间复杂度O(n²),空间复杂度O(1)。代码包含边界条件处理和指针更新逻辑,适用于链表长度在1-5000范围内的排序需求。 阅读详情

力扣(LeetCode)官网 - 全球极客挚爱的技术成长平台

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

插入排序 算法的步骤:

  1. 插入排序是迭代的,每次只移动一个元素,直到所有元素可以形成一个有序的输出列表。
  2. 每次迭代中,插入排序只从输入数据中移除一个待排序的元素,找到它在序列中适当的位置,并将其插入。
  3. 重复直到所有输入数据插入完为止。

下面是插入排序算法的一个图形示例。部分排序的列表(黑色)最初只包含列表中的第一个元素。每次迭代时,从输入数据中删除一个元素(红色),并就地插入已排序的列表中。 

解题思路:力扣(LeetCode)官网 - 全球极客挚爱的技术成长平台 

代码如下:

class Solution {
    public ListNode insertionSortList(ListNode head) {
        if(head == null) {
            return head;
        }
        ListNode dummy = new ListNode(0);
        dummy.next = head;
        //排好序的最后一个节点
        ListNode cur = head;
        //待插入的节点
        ListNode tmp = cur.next;
        while(tmp != null) {
            if(cur.val <= tmp.val) {
                cur = cur.next;
            }
            else {
                //如果tmp.val > cur.val,则从头节点开始寻找插入的位置
                ListNode pre = dummy;
                while(pre.next.val <= tmp.val){
                    pre = pre.next;
                }
                //找到插入位置后,进入插入操作(这个插入操作不会影响cur的位置)
                cur.next = tmp.next;
                tmp.next = pre.next;
                pre.next = tmp;
            }
            tmp = cur.next;

        }
        return dummy.next;

    }
}

mcgs数据查表功能,用于大量数据对比查找对应数据,减少PLC代码 mcgs脚本实现数据查表功能 阅读详情

相关推荐

CANoe LIN一致性测试之干扰测试Test moudle_LIN Disturbance Block

注意:相邻两个显隐性不同的bit不允许干扰,例如我同时选择bit6和bit7,相邻两个同显隐性的bit允许干扰,例如当我选择bit3和bit4,项,这里我选择ID:为0x2F(PID:0x6F)的frame。需按照具体测试规范实施干扰项,帧头和数据段都可以实现干扰。最近发现一个干扰测试模块,下面是一些具体使用方法。选择干扰项:PID的奇偶校验位(一致性测试干扰测试之手动测试。一个待测试frameD。

yuanyikangkang的博客 3410

#147 Insertion Sort List

Description Given the head of a singly linked list, sort the list using insertion sort, and return the sorted list’s head. The steps of the insertion sort algorithm: Insertion sort iterates, consuming one input element each repetition and growing a sorted

YY_Tina的博客 301

华为交换机实战:如何用ACL+流分类精准限制特定IP的网速(附完整命令)

本文详细介绍了华为交换机如何通过ACL+流分类技术实现精准IP限速,包括ACL规则配置、流分类关联、流行为定义及流策略应用等完整步骤。文章提供了实战命令和配置验证方法,帮助网络管理员有效管理带宽资源,解决特定IP占用过多带宽的问题。

weixin_29229055的博客 100

Insertion Sort List

Sort a linked list using insertion sort. A graphical example of insertion sort. The partial sorted list (black) initially contains only the first element in the list. With each iteration one element (red) is removed from the input data and inserted in-pl

bool的博客 225

VizCut 全自动批量视频二次去重处理!支持视频无水印解析下载和批量剪辑,完全免费,使用简单!

可制作和分享剪辑模板,已提供20+种剪辑方案,内置众多扫光蒙版素材。支持二次去重批量处理,完全免费,无广告,且支持视频无水印解析下载,非常强大。如果说我们处理的视频需要进行一样的参数设置的话,就可以把我,1设置的参数设置为模板,后面就可以一键调用。1. 本地CPU处理,可设置线程数,可开启GPU加速,无任何限制,全看机器性能。适用场景:自媒体搬运、短视频二创、批量去重等,完全免费,无广告干扰!3. 20+种参数可调可选,内置很多相关素材。可保存为模板,可复用、可分享、可导入。2. 所有参数的设置,

goodfat的博客 5310

ml307 二次开发

中移物联网旗下4g模组官方网站官方教程id=514官方客户不知道啥时候上班 早上10点也说不在服务时间内 找不到官方的sdk下载路径。

myWorld001的博客 2871

insertion-sort-list

【题目描述】Sort a linked list using insertion sort.对链表使用插入排序 【解题思路】新建一个头节点,遍历原来的链表,对原链表的每个节点找到新链表中适合插入位置的前指针,然后执行插入操作。这种操作链表的题有一个技巧就是新建一个newhead作为head,然后把数据插入到newhead的链表中,最后返回newhead->next。 【考查内容】链表的插入排...

weixin_36909758的博客 164

【C语言项目合集】这十个入门必备练手项目,让C语言对你来说不再难学!

适合刚入门C语言的编程学习小白的十个练手项目,每个都很经典且实用,让你学完C语言不再迷茫!

kxtxdy的博客 3万+

LeetCode147: Insertion Sort List

Sort a linked list using insertion sort. 本题很简单,用插入排序方法对链表进行排序。可以构建一个临时的链表,然后将待排序的链表的每一个节点插入到临时链表中。代码如下: /** * Definition for singly-linked list. * struct ListNode { * int val; *

哈哈的个人专栏 1452

uniapp - 解决苹果ios真机运行报错:错误:请查看是否设备未加入到证书列表或者确认证书类型是否匹配(HbuilderX运行IOS手机出现问题,uniapp运行到IOS真机提示请查看是否设备未)

uni-app,ios苹果,App平台端,uniapp运行到IOS真机提示错误:请查看是否设备未加入到证书列表或者确认证书类型是否匹配,UUID在哪里,uniApp运行到ios真机报错解决,安装自定义基座App失败,没找到有计划资源,证书、标识符和描述文件,证书标识符和描述文件下面没有选项怎么回事,HBuilder真机调试报错请查看是否设备未加入到证书列表或者确认证书类型是否匹配,UniApp运行到IOS真机提示,授权的设备才可以直接安装基座,添加调试的IOS设备,在Devices中,添加手机设备UUID

🏆 前端领域优质创作者 1万+

电动汽车远程监控与诊断软件:BMW ConnectedDrive EV远程监控二次开发_7.数据安全与隐私保护

数据加密是保护数据安全的重要手段之一。在电动汽车远程监控与诊断软件中,加密技术可以确保数据在传输过程中的安全性和完整性。常见的加密技术包括对称加密和非对称加密。

zhubeibei168的博客 882

力扣147. 对链表进行插入排序(插排,result->next)

力扣147. 对链表进行插入排序(插排,result->next) https://leetcode-cn.com/problems/insertion-sort-list/ 对链表进行插入排序。 插入排序的动画演示如上。从第一个元素开始,该链表可以被认为已经部分排序(用黑色表示)。 每次迭代时,从输入数据中移除一个元素(用红色表示),并原地将其插入到已排好序的链表中。 插入排...

小麦China的博客 340

温度PID控制PLC程序

温度PID稳定控制程序,适用于欧姆龙PLC,对其他PLC也具有很大参考价值

LeetCode 147. 对链表进行插入排序

🌈🌈😄😄 欢迎来到茶色岛独家岛屿,本期将为大家揭晓LeetCode 147. 对链表进行插入排序,做好准备了么,那么开始吧。 🌲🌲🐴🐴

weixin_62275996的博客 462

jdk-8u144-linux-x64.tar.gz.

该资源为搭建Linux系统Java环境用,资源的后缀为tar.gz格式的压缩包

大中型超市收银系统(可直接运行)

光步前台收银系统系统功能:商品销售、商品退货、挂单、收银员权限、会员销售、单品取消、整单取消、商品查询、脱机销售、脱机数据上传,基本资料下载,开钱箱、小票打印、收款结算,支持多币种付款方式(现金、储值卡、礼券、微信等),支持多种促销。运行环境:.net 4.0登陆信息用户名:1001 密码:123456内置商品信息,商品编码可输入00001000 - 00010000,测试效果相关功能键F5 结算 F9挂单 F11商品查询 F8退货 Insert单品取消 Del整单取消 F12开钱箱F2 会员 Ctrl+Z退出系统 Home 锁屏 相关源码待公开

leetcode 147 对链表进行插入排序

package leetcode.sort; /** * @Description: 对链表进行插入排序。 插入排序的动画演示如上。从第一个元素开始,该链表可以被认为已经部分排序(用黑色表示)。 每次迭代时,从输入数据中移除一个元素(用红色表示),并原地将其插入到已排好序的链表中。 插入排序算法: 插入排序是迭代的,每次只移动一个元素,直到所有元素可以形成一个有序的输出列表。 每次迭代中,插入排序只从输入数据中移除一个待排序的元素,找到它在序列中适当的位置,并将其插入。 重复直到所有输入数..

qq_34823218的博客 129

老版QQ原生表情gif动态

这是老版的QQ表情,不过全是动态的的,Windows照片查看器是不会动的,可以右击用浏览器打开查看,再说一遍是老版的,只是分享给宁愿用老版也要动态的人。

LeetCode第147题_对链表进行插入排序

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

qq_40263592的博客 932

LeetCode 147 对链表进行插入排序

LeetCode 147 对链表进行插入排序 题目 对链表进行插入排序 解法 /** * Definition for singly-linked list. * struct ListNode { * int val; * ListNode *next; * ListNode() : val(0), next(nullptr) {} * ListNode(int x) : val(x), next(nullptr) {} * ListNode(int

zzh123353的博客 111

LeetCode 147. 对链表进行插入排序 | C/C++版

给定单个链表的头 head ,使用 插入排序 对链表进行排序,并返回 排序后链表的头 。 插入排序 算法的步骤: 插入排序是迭代的,每次只移动一个元素,直到所有元素可以形成一个有序的输出列表。 每次迭代中,插入排序只从输入数据中移除一个待排序的元素,找到它在序列中适当的位置,并将其插入。 重复直到所有输入数据插入完为止。 下面是插入排序算法的一个图形示例。部分排序的列表(黑色)最初只包含列表中的第一个元素。每次迭代时,从输入数据中删除一个元素(红色),并就地插入已排序的列表中。 对链表进行插入排序。

weixin_45992021的博客 860

leetcode 147 对链表进行插入排序 C语言实现

题目 leetcode 147 示例 1: 输入: 4->2->1->3 输出: 1->2->3->4 示例 2: 输入: -1->5->3->4->0 输出: -1->0->3->4->5 代码 struct ListNode* insertionSortList(struct ListNode* head){...

qq_42007287的博客 235

力扣--对链表进行插入排序--147

所以这样写是不行的,但反过来,该题的测试用例也不能完全通过, 他会有一个这样的测试用例。再力扣上运行,可想而知,肯定是不行的,会有一个超出时间限制,有一个测试用例不通过;我一开始也是完全仿照c语言数组实现插入排序的方法来的。其实现方法就是将数组部分改为对应的链表。

2301_81265915的博客 734

LeetCode题库-147题-对链表进行插入排序

LeetCode每日练习

2302_77468369的博客 925

Leetcode147.链表插入排序

Leetcode147.链表插入排序 插入排序算法: 插入排序是迭代的,每次只移动一个元素,直到所有元素可以形成一个有序的输出列表。 每次迭代中,插入排序只从输入数据中移除一个待排序的元素,找到它在序列中适当的位置,并将其插入。 重复直到所有输入数据插入完为止。 class Solution { public: ListNode* insertionSortList(ListNode* head) { if(head==NULL || head->next==NULL)re

weixin_39451679的博客 99

力扣leetcode每日一题 147. 对链表进行插入排序

/** * Definition for singly-linked list. * struct ListNode { * int val; * ListNode *next; * ListNode(int x) : val(x), next(NULL) {} * }; */ class Solution { public: ListNode* insertionSortList(ListNode* head) { ListNode* new.

weixin_43304992的博客 207

leetcode:147. 对链表进行插入排序

题目描述 147. 对链表进行插入排序 题目来源 题目解析 /** * Definition for singly-linked list. * public class ListNode { * int val; * ListNode next; * ListNode(int x) { val = x; } * } */ class Solution { public ListNode insertionSortList(ListNode head) {

OceanStar的博客 411

LeetCode147-对链表进行插入排序

> 对一个链表中的节点进行插入排序 > 插入排序算法的视频链接及详解所示如下: > [插入排序算法视频链接]

代码铺子 283
上一篇: 在MAC电脑上将NTFS格式移动硬盘转换为ExFAT格式
下一篇: Leetcode148. 排序链表
魑魅魍魉114
博客等级 码龄10年 165粉丝 240原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值