Leetcode147. 对链表进行插入排序

news/2024/10/18 16:48:51/

力扣(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;}
}


http://www.ppmy.cn/news/1103752.html

相关文章

Tomcat源码:CoyoteAdapter、Valve#invoke、ApplicationFilterChain

前文&#xff1a; 《Tomcat源码&#xff1a;启动类Bootstrap与Catalina的加载》 《Tomcat源码&#xff1a;容器的生命周期管理与事件监听》 《Tomcat源码&#xff1a;StandardServer与StandardService》 《Tomcat源码&#xff1a;Container接口》 《Tomcat源码&#xff1a…

cookies 设置过期时间

1.如何在浏览器中查看cookie过期时间 F12-Application-Cookies可以查看到网页所有设置cookie值&#xff0c; 如果设置了过期时间的cookie是可以看到过期时间的持久cookie&#xff08;persistent cookie&#xff09;&#xff0c; 没有设置过期时间的是会话cookie&#xff08;s…

Sharding-JDBC分库分表-自定义分片算法-4

默认分片算法 Sharding JDBC通过org.apache.shardingsphere.sharding.spi.ShardingAlgorithm接口定义了数据分片算法&#xff0c;5.2.1版本默认提供了如下的分片算法 配置标识自动分片算法详细说明类名MODY基于取模的分片算法ModShardingAlgorithmHASH_MODY基于哈希取模的分片…

Eigen库中MatrixXd类型与VectorXd类型的相互映射与数据复制

一、Eigen库的Map功能 Eigen库的Map功能是一个强大的工具&#xff0c;用于将现有的数据&#xff08;例如数组或其他线性代数库的数据结构&#xff09;映射到Eigen矩阵或向量中&#xff0c;而无需复制数据。这种映射可以大大提高性能&#xff0c;因为它避免了不必要的数据复制&a…

中介模式简介

概念&#xff1a; 中介者模式&#xff08;Mediator Pattern&#xff09;是一种行为型设计模式&#xff0c;它通过引入一个中介者对象来解耦多个相关对象之间的交互。中介者充当了多个对象之间的协调者&#xff0c;使得这些对象不需要直接相互通信&#xff0c;而是通过与中介者…

Qt学习记录___9.10

1.QtSvg初体验 #include <QtSvg> QSvgWidget w1;w1.load(QString(":/iconfont-gongyichongwu.svg"));QSvgRenderer *renderw1.renderer();qDebug()<<render->defaultSize();w1.resize(render->defaultSize());w1.show(); 2. 对话框实验。 QT之隐藏…

YOLO的基本原理详解

YOLO介绍 YOLO是一种新的目标检测方法。以前的目标检测方法通过重新利用分类器来执行检测。与先前的方案不同&#xff0c;将目标检测看作回归问题从空间上定位边界框&#xff08;bounding box&#xff09;并预测该框的类别概率。使用单个神经网络&#xff0c;在一次评估中直接…

PLC-Recorder离线分析软件Ana里为什么不能显示变量的编号?

在PLC-Recorder在线软件里&#xff0c;大家可以在曲线上找到变量的编号&#xff08;由通道编号、变量类型、同类型序号组成&#xff09;。这个编号也是各软件识别变量的唯一标识。在变量和PLC很多时&#xff0c;可以方便地找到对应的PLC&#xff0c;如下&#xff1a; 有朋友问&…