[链表专题]力扣LCR077, 83

1. LCR077 : 排序链表

题 : 

给定链表的头结点 head ,请将其按 升序 排列并返回 排序后的链表 。示例 1:输入:head = [4,2,1,3]
输出:[1,2,3,4]
示例 2:输入:head = [-1,5,3,4,0]
输出:[-1,0,3,4,5]
示例 3:输入:head = []
输出:[]提示:链表中节点的数目在范围 [0, 5 * 104] 内
-105 <= Node.val <= 105进阶:你可以在 O(n log n) 时间复杂度和常数级空间复杂度下,对链表进行排序吗?

解法1 : 借助辅助数组求解

思路 : 先一轮遍历,确定链表节点的个数,并使用辅助数组将链表节点的数据域记录下来,再遍历链表反向覆盖.该解法空间复杂度较高O(n),时间复杂度较低O(n).

解 : 

class Solution {public ListNode sortList(ListNode head) {//如果是空链表, 或者链表只有一个节点时, 此时无需排序if (head == null || head.next == null) {return head;}int n = 0;ListNode temp = head;while (temp != null) {n++;temp = temp.next;}int[] arr = new int[n];temp = head;n = 0;while (temp != null) {arr[n++] = temp.val;temp = temp.next;}Arrays.sort(arr);temp = head;n = 0;while (temp != null) {temp.val = arr[n++];temp = temp.next;}return head;}
}

解法2 : 递归

思路 : 

解 : 

2. 力扣83 : 删除排序链表中的重复元素

题 : 

给定一个已排序的链表的头 head , 删除所有重复的元素,使每个元素只出现一次 。返回 已排序的链表 。示例 1:输入:head = [1,1,2]
输出:[1,2]
示例 2:输入:head = [1,1,2,3,3]
输出:[1,2,3]提示:链表中节点数目在范围 [0, 300] 内
-100 <= Node.val <= 100
题目数据保证链表已经按升序 排列

(1). 解法1 : 递归

思路 : 不断递,当递到最后一个节点时,返回最后一个节点,第一次归时,p指向了最后一个节点,head指向了p的上一个节点,如果二者相等,则删除p.返回head节点.

(2). 技巧 :

  • 在于该链表是升序排列的,所以比较相邻节点的大小.
  • 该链表的头节点不用删除,所以不用借助于哨兵节点.

(3). 解 : 

class Solution {public ListNode deleteDuplicates(ListNode head) {//如果链表为空, 或者只有一个节点if (head == null || head.next == null) {return head;}ListNode p = deleteDuplicates(head.next);if (head.val == p.val) {head.next = head.next.next;}return head;}
}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/diannao/8457.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

信创基础硬件之芯片

信创基础硬件之芯片 文章目录 信创基础硬件之芯片服务器服务器的定义服务器的功能服务器的构成服务器的性能 处理器&#xff08;CPU&#xff09;CPUGPUDPU CPU的分类按CPU指令集架构分类按CPU体系架构分类 CPU产业链六大国产CPU公司详解海光飞腾鲲鹏兆芯龙芯申威 国产CPU对比从…

Linux网络编程:TCP编程实现

目录 1、前言 2、函数介绍 2.1 socket函数 与 通信域 2.2 bind函数 与 通信结构体 2.2.1 domain通信地址族 与 通信结构体 2.2.2 IPv4地址族结构体 2.2.3 通用地址族结构体 2.2.4 示例&#xff1a;为套接字fd绑定通信结构体addr 2.3 listen函数 与 accept函数 …

了解外汇询价和锁价,全球交易中的关键概念

外汇市场是全球交易量最大的金融市场之一&#xff0c;每天都有大量的货币买卖活动。在外汇交易中&#xff0c;询价和锁价是两个关键概念&#xff0c;它们不仅影响交易者的决策&#xff0c;还关系到交易的成本和风险控制。为了帮助交易者更好地理解和应用这两个概念&#xff0c;…

Java中ArrayList、LinkedList和Vector的底层原理

ArrayList Java中的ArrayList底层原理主要涉及其数据结构、扩容机制、线程安全性以及元素存储和访问方式。以下是对ArrayList底层原理的总结&#xff1a; 数据结构 ArrayList的底层数据结构是一个动态数组。这意味着ArrayList可以根据需要自动增长其容量&#xff0c;从而存储…

Linux课程机房虚拟机

Linux课程机房虚拟机 机房虚拟机&#xff08;默认不能联网的&#xff09;&#xff1a; 百度网盘&#xff1a;https://pan.baidu.com/s/1WqSvqB3Y7b_D4690CDBlJA?pwdaugc 123网盘&#xff1a;https://www.123pan.com/s/tQ0UVv-LiolA.html提取码:F4xm ‍ 联网使用说明&…

小trick

https://codeforces.com/gym/105104/problem/C const int N 1e6 10;int T, n, x; ull v[N];int main() {mt19937_64 rng(random_device{}()); // 注意这种生成随机数的方法&#xff01;&#xff01;&#xff01;F(i, 0, N - 10)v[i] rng();for (R(T); T --; ) {R(n);map &…

设计模式——观察者模式(Observer)

观察者模式&#xff08;Observer Pattern&#xff09;是软件设计模式的一种&#xff0c;也被称为模型-视图模式、源-收听者模式或从属者模式。它定义了一种一对多的依赖关系&#xff0c;让多个观察者对象同时监听某一个主题对象。当主题对象状态发生变化时&#xff0c;它的所有…

笔记2:cifar10数据集获取及pytorch批量处理

&#xff08;1&#xff09;cifar10数据集预处理 CIFAR-10是一个广泛使用的图像数据集&#xff0c;它由10个类别的共60000张32x32彩色图像组成&#xff0c;每个类别有6000张图像。 CIFAR-10官网 以下为CIFAR-10数据集data_batch_*表示训练集数据&#xff0c;test_batch表示测试…

分成互质组

题目描述: 给定 n 个正整数&#xff0c;将它们分组&#xff0c;使得每组中任意两个数互质。 至少要分成多少个组&#xff1f; 输入格式 第一行是一个正整数 n。 第二行是 n 个不大于10000的正整数。 输出格式 一个正整数&#xff0c;即最少需要的组数。 #include<iostream…

DDR5和LPDDR4/5 命令解析

关键名称介绍 DDR5 SDRAM和LPDDR4/5都采用了高级的命令集来支持更高效的内存管理和操作,其中“Multi-purpose command (MPC)”、“Mode Register Read (MRR)”、“Mode Register Write (MRW)”,以及“Write Pattern Command”是几种关键的命令类型,它们在内存初始化、配置和…

Windows 虚机扩容C盘

Windows 虚机扩容C盘 操作思路1、新增磁盘容量2、划分磁盘空间3、扩容对应盘 操作步骤 操作思路 1、新增磁盘容量 2、划分磁盘空间 3、扩容对应盘 操作步骤 1、虚机新增磁盘空间 先确认宿主机是否有足够空间&#xff0c;有足够空间后&#xff0c;编辑虚机&#xff0c;增加…

【Java】山外有山,类外还有类

【Java】山外有山&#xff0c;类外还有类 内部类是Java语言中的一种特性&#xff0c;它允许在另一个类中定义一个类。 内部类可以是静态的&#xff08;不依赖于外部类的实例&#xff09;&#xff0c;也可以是非静态的&#xff08;依赖于外部类的实例&#xff09;。 在本篇博…

不止是搭建 | 极空间虚拟机安装一个可做生产力的Ubuntu桌面系统以及后续优化

不止是搭建 | 极空间虚拟机安装一个可做生产力的Ubuntu桌面系统以及后续优化 哈喽小伙伴们好&#xff0c;偶是Stark-C~ 我在上篇极空间文章中不是给小伙伴们分享了使用虚拟机安装软路由固件『iStoreOS』的教程嘛&#xff1a; 打造Docker完全体&#xff0c; 开箱即用的各类插…

vue3封装获取当前年、月、季度、周

1.新建在utils文件夹中handleTime.js文件用于封装方法 // 计算当前周的开始和结束时间 export function calcNowWeek() {let startWeek moment().weekday(0).format(YYYY-MM-DD);startWeek moment(startWeek).subtract(2, days).format(YYYY-MM-DD)let endWeek moment().we…

Kafka 环境搭建之伪分布式集群模式详细教程

Kafka 简介及相关组件介绍 Kafka 环境搭建和使用之单机模式详细教程 伪集群模式 Kafka伪集群是一种在单个机器上模拟多节点Kafka集群的配置方式,主要用于开发和测试环境。在伪集群模式下,你可以配置多个Kafka broker实例,它们都连接到同一个Zookeeper实例或者集群,从而模…

通过 Java 操作 redis -- hash 哈希表基本命令

目录 使用命令 hset&#xff0c;hget 使用命令 hexists 使用命令 hdel 使用命令 hkeys&#xff0c;hvals 使用命令 hmget&#xff0c;hmset 关于 redis hash 哈希表类型的相关命令推荐看Redis - hash 哈希表 要想通过 Java 操作 redis&#xff0c;首先要连接上 redis 服务…

员工满意度调查真实度难题如何攻克?

在企业管理实践中&#xff0c;员工满意度调查无疑扮演着举足轻重的角色。它不仅能够帮助企业洞察员工的真实心声&#xff0c;还是企业制定精准管理策略的重要依据。然而&#xff0c;很多时候&#xff0c;员工满意度调查的真实度却令人堪忧&#xff0c;让企业难以获得真实、有效…

手撕多线程

用一个双线程轮流打印1-100 // 定义一个类&#xff0c;用于交替打印奇偶数 public class AlternatePrinting {// 当前待打印的数字&#xff0c;初始为1private int currentNumber 1;// 用作线程间同步的锁对象private final Object lock new Object();// 程序入口public sta…

企业做网站,如何设计才有创意?

企业做网站&#xff0c;如何设计才有创意&#xff1f;我们都希望能打造一个有创意的网站建设&#xff0c;能在众多网站中脱颖而出&#xff0c;能够营销推广公司的产品&#xff0c;为公司带来更多的经济效益收益。广州网站建设的时候&#xff0c;记住直观的设计可以让用户体验更…

批处理脚本示例,用于删除特定目录下所有以 .pdb、.ilk、.lib、.map、.exp 结尾的文件:

以下是一个批处理脚本示例&#xff0c;用于删除特定目录下所有以 .pdb、.ilk、.lib、.map、.exp 结尾的文件&#xff1a; echo off set target_dirC:\path\to\directorydel /S /Q "%target_dir%\*.pdb" del /S /Q "%target_dir%\*.ilk" del /S /Q "%…