当前位置:网站首页>2022.07.18 _ a day
2022.07.18 _ a day
2022-07-31 07:40:00 【No. い】
147. 对链表进行插入排序
题目描述
给定单个链表的头 head
,使用 插入排序 对链表进行排序,并返回 排序后链表的头 .
插入排序 算法的步骤:
- 插入排序是迭代的,每次只移动一个元素,直到所有元素可以形成一个有序的输出列表.
- 每次迭代中,插入排序只从输入数据中移除一个待排序的元素,找到它在序列中适当的位置,并将其插入.
- 重复直到所有输入数据插入完为止.
下面是插入排序算法的一个图形示例.部分排序的列表(黑色)最初只包含列表中的第一个元素.每次迭代时,从输入数据中删除一个元素(红色),并就地插入已排序的列表中.
对链表进行插入排序.
示例 1:
输入: head = [4,2,1,3] 输出: [1,2,3,4]
示例 2:
输入: head = [-1,5,3,4,0] 输出: [-1,0,3,4,5]
提示:
- 列表中的节点数在
[1, 5000]
范围内 -5000 <= Node.val <= 5000
- 链表
- 排序
coding
1. Insertion sort on linked list directly
class Solution {
public ListNode insertionSortList(ListNode head) {
ListNode node1 = head.next;
while (node1 != null) {
ListNode node2 = head;
while (node1 != node2) {
if (node2.val > node1.val) {
int temp = node2.val;
node2.val = node1.val;
node1.val = temp;
}
node2 = node2.next;
}
node1 = node1.next;
}
return head;
}
}
2. 将链表转换为数组,直接调用 Arrays.sort();
class Solution {
public ListNode insertionSortList(ListNode head) {
ListNode node = head;
int cnt = 0;
while (node != null) {
node = node.next;
cnt ++;
}
node = head;
int[] arr = new int[cnt];
while (node != null) {
arr[--cnt] = node.val;
node = node.next;
}
Arrays.sort(arr);
node = head;
for (int i : arr) {
node.val = i;
node = node.next;
}
return head;
}
}
边栏推荐
- 《白帽子说Web安全》思维导图
- Gradle remove dependency demo
- 2022.07.13_每日一题
- 项目 - 如何根据最近30天、最近14天、最近7天、最近24小时、自定义时间范围查询MySQL中的数据?
- postgresql源码学习(34)—— 事务日志⑩ - 全页写机制
- How to choose a suitable UI component library in uni-app
- 【Star项目】小帽飞机大战(七)
- 基金投顾业务
- 【解决】mysql本地计算机上的MySQL服务启动后停止。某些服务在未由其他服务或程序使用时将自动停止
- LeetCode brush # 376 # Medium - swing sequence
猜你喜欢
链表实现及任务调度
Difficulty comparison between high concurrency and multithreading (easy to confuse)
【微服务】(十六)—— 分布式事务Seata
【网络攻防】常见的网络攻防技术——黑客攻防(通俗易懂版)
电脑开机密码怎么设置?如何给你的电脑加上“安全锁”
简单谈谈Feign
LeetCode brush # 376 # Medium - swing sequence
Core Tower Electronics won the championship in the Wuhu Division of the 11th China Innovation and Entrepreneurship Competition
文件 - 05 下载文件:根据文件Id下载文件
【Go语言入门教程】Go语言简介
随机推荐
opencv、pil和from torchvision.transforms的Resize, Compose, ToTensor, Normalize等差别
360 push-360 push tool-360 batch push tool
自动翻译软件-批量批量自动翻译软件推荐
Moment.js common methods
Chapter 16: Constructing the Magic Square for Prime Numbers of Order n(5,7)
【面试:并发篇38:多线程:线程池】ThreadPoolExecutor类的基本概念
LeetCode刷题——摆动序列#376#Medium
PCB抄板
DirectExchange switch simple introduction demo
文件 - 05 下载文件:根据文件Id下载文件
我开发了一个利用 Bun 执行 .ts / .js 文件的 VS Code 插件
iOS大厂面试查漏补缺
【网络攻防】常见的网络攻防技术——黑客攻防(通俗易懂版)
【编程题】【Scratch三级】2022.03 冬天下雪了
2022.07.13_每日一题
芯塔电子斩获第十一届中国双创大赛芜湖赛区桂冠
Automatic translation software - batch batch automatic translation software recommendation
SCI写作指南
HighTec 的安装与配置
一文读懂 MongoDB 和 MySQL 的差异