【LeetCode】《LeetCode 101》第十三章:链表

news2025/1/24 8:32:11

文章目录

  • 13.1 数据结构介绍
  • 13.2 链表的基本操作
    • 206. 反转链表(简单)
    • 21. 合并两个有序链表(简单)
    • 24.两两交换链表中的节点(中等)
  • 13.3 其它链表技巧
    • 160. 相交链表(简单)
    • 234. 回文链表(简单)
  • 13.4 练习
    • 83. 删除排序链表中的重复元素(简单)
    • 328. 奇偶链表(中等)
    • 19. 删除链表的倒数第 N 个结点(中等)
    • 148. 排序链表(中等)
  • 总结

13.1 数据结构介绍

  • (单)链表是由节点和指针构成的数据结构,每个节点存有一个值,和一个指向下一个节点的指针,因此很多链表问题可以用递归处理。不同于数组,链表并不能直接获取任意节点的值,必须要通过指针找到该节点后才能获取值。同理,在未遍历到链表结尾时,我们也无法知道链表长度,除非依赖其他数据结构。

  • LeetCode 默认的链表表示方式如下:

    struct ListNode{
    	int val;
    	ListNode *next;
    	ListNode(int x) : val(x), next(nullptr){}
    };
    
  • 由于在进行链表操作的时候,尤其是删除节点,经常会因为对当前节点进行操作而导致内存或指针出现问题。有两个小技巧可以解决这个问题:一是尽量处理当前节点的下一个节点而非当前节点;二是建立一个虚拟节点(dummy node),使其指向当前链表的头节点,这样即使原链表所有节点被删除,也会有一个 dummy 存在,返回 dummy->next 即可。

13.2 链表的基本操作

206. 反转链表(简单)

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

思路及代码: 206. 反转链表

21. 合并两个有序链表(简单)

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

思路及代码: 21. 合并两个有序链表

24.两两交换链表中的节点(中等)

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

思路及代码: 24.两两交换链表中的节点

13.3 其它链表技巧

160. 相交链表(简单)

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

思路及代码: 160. 相交链表

234. 回文链表(简单)

在这里插入图片描述
在这里插入图片描述

在这里插入图片描述

思路及代码: 234. 回文链表

13.4 练习

83. 删除排序链表中的重复元素(简单)

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

思路及代码: 83. 删除排序链表中的重复元素

328. 奇偶链表(中等)

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

思路及代码: 328. 奇偶链表

19. 删除链表的倒数第 N 个结点(中等)

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

思路及代码: 19. 删除链表的倒数第 N 个结点

148. 排序链表(中等)

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

思路及代码: 148. 排序链表

总结

  • 指针题目通常需要画图,仔细分析节点之间的连接关系,确定连接顺序。

  • 通常设置一个虚拟节点 dummy,注意书写方式。数据域可以不存储任何信息,指针域存储指向开始节点的指针(即第一个元素节点的存储位置)。 虚拟节点作用很大,可以自行百度。

    ListNode *dummy = new ListNode(), *cur = dummy;
    
  • 链表的自定义构造函数(ACM模式需要自己写出来):

    /**
     * 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 x, ListNode *next) : val(x), next(next) {}
     * };
     */
    
  • 链表的其他技巧:通常用到数学思想,比如能够判断环的快慢指针,利用快慢指针找到链表中点。

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

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

相关文章

Typora +Picgo 搭建个人笔记

文章目录 Typora Picgo 搭建个人笔记一、Picgo Github 搭建图床1.基础设置2. 将配置导出,方便下次使用 二、Typora:设置 :1. 基本设置2. 导出自动提交3. 备份图片 Typora Picgo 搭建个人笔记 typora 下载地址: https://zahui.fan…

使用UniApp实现视频数组自动下载与播放功能:一步步指导

🌷🍁 博主猫头虎 带您 Go to New World.✨🍁 🦄 博客首页——猫头虎的博客🎐 🐳《面试题大全专栏》 文章图文并茂🦕生动形象🦖简单易学!欢迎大家来踩踩~🌺 &a…

阶段性总结

uart协议: 通用异步收发器 UART(Universal Asynchronous Receiver/Transmitter),是一种串行、异步、全双工的通信协议,将所需传输的数据一位接一位地传输,在UART通讯协议中信号线上的状态位高电平代表’1’&#xff0…

Java应用性能问题诊断技巧

作者:张彦东 参考:https://developer.aliyun.com/ebook/450?spma2c6h.20345107.ebook-index.28.6eb21f54J7SUYc 文章目录 (一)内存1.内存2.内存-JMX3.内存-Jmap4.内存-结合代码确认问题 (二)CPU1.CPU-JMX或…

短视频矩阵系统源码开发

短视频剪辑矩阵系统开发源码----源头搭建 一、源码技术构建源码部署搭建交付之---- 1.需要协助系统完成部署、接口全部正常接入、系统正常运行多久?7个工作日 2.需要准备好服务器以及备案域名 3.短视频SEO模块一年项目带宽,带宽最低要求10M,…

如何将电脑上的“小电影”隐藏为一张图片?这波操作绝了!!

大家好,我是冰河~~ 最近,有很多小伙伴想跟我学渗透。平时时间确实太忙了,除了要研发公司项目外,写公号,写博客,录视频,写书稿,维护开源项目,几乎占据了我全部的业余时间…

【性能测试】使用JMeter对code论坛进行压力测试

1.项目介绍 项目简介 code 论坛是一个技术交流社区。主要功能有发布帖子,查看帖子,评价帖子,删除帖子,点赞帖子,站内信,个人中心,修改个人信息等。是一个基于 Spring 的前后端分离项目。 项目链…

vue3自定义指令批量注册

第一步、在src目录下新建directives文件文件夹 用来存放不同的指令,以dbounce指令为例: 第二步、在directives目录下创建debounce.js文件,文件内容如下: // 防抖 const debounceClick {mounted(el, binding) {let timerel.addE…

点云处理【三】(点云降采样)

点云降采样 第一章 点云数据采集 第二章 点云滤波 第二章 点云降采样 1. 为什么要降采样? 我们获得的数据量大,特别是几十万个以上的点云,里面有很多冗余数据,会导致处理起来比较耗时。 降采样是一种有效的减少数据、缩减计算量…

喜报 | 擎创科技实力亮相2023科创会并荣获科技创新奖

近日,由国家互联网数据中心产业技术创新战略联盟(NIISA)主办的“2023第二届国际互联网产业科技创新大会暨互联网创新产品展览会”于北京圆满落幕。 擎创科技副总裁冯陈湧受邀出席本次论坛,并发表了“银行分布式核心智能运维体系思…

毫米波雷达模块技术革新:在自动驾驶汽车中的前沿应用

随着自动驾驶技术的快速发展,毫米波雷达模块的技术革新成为推动这一领域的关键因素之一。本文将深入研究毫米波雷达模块技术的最新进展,并探讨其在自动驾驶汽车中的前沿应用。 毫米波雷达模块的基本原理 解释毫米波雷达模块的基本工作原理,强…

Goby 漏洞发布|Honeywell PM43 loadfile.lp 文件命令执行漏洞(CVE-2023-3710)

漏洞名称:Honeywell PM43 loadfile.lp 文件命令执行漏洞(CVE-2023-3710) English Name:Honeywell PM43 loadfile.lp file command execution vulnerability (CVE-2023-3710) CVSS core: 9.8 影响资产数: 96 漏洞描…

等保三级测评(MySQL)

mysql版本号:5.7.x 进入Mysql 通过mysql -u root -p 进入MySQL命令行,开展数据库配置核查; a)应对登录的用户进行身份标识和鉴别,身份标识具有唯一性,身份鉴别信息具有复杂度要求并定期更换; SELECT Host,User,authentication_string,plugin FROM mysql.user;b)被测…

软件测试(一)概念

软件测试 软件测试的生命周期: 需求分析→测试计划→ 测试设计、测试开发→ 测试执行→ 测试评估 需求分析:需求是非完整,需求是否正确测试计划:确定软件由谁测试,什么时候开始,什么时候结束,…

内网和热点同时连接使用配置

解决如标题问题 查看当前永久路由信息 route print截图保存(重要) 截图保存(重要)查出来的永久路由,以防配置不成功时回退,回退方法就是下面的“添加永久路由” 删除当前的路由 0.0.0.0 是上面查出的网络地址 route delete 0.0.0.0内网IP信息 添加永久…

MATLAB——RBF、GRNN和PNN神经网络案例参考程序

欢迎关注“电击小子程高兴的MATLAB小屋” %————RBF程序实例 %% I. 清空环境变量 clear all clc %% II. 训练集/测试集产生 %% % 1. 导入数据 load spectra_data.mat %% % 2. 随机产生训练集和测试集 temp randperm(size(NIR,1)); % 训练集——50个样本 P_train NIR(t…

2023 香山杯 --- Crypto wp

文章目录 题目解题思路解题代码 题目 import os import gmpy2 from Crypto.Util.number import * import random from secrets import flag def pad(s,l):return s os.urandom(l - len(s)) def gen():g getPrime(8)while True:p g * random.getrandbits(138) 1if isPrime(…

E138: Can‘t write viminfo file

E138: Can’t write viminfo file /home/xxx/.viminfo! 原因 进入/home/xxx/目录下,用ls -a你会发现有很多.viminfa.tmp - .viminfz.tmp 这种的临时文件,这是因为使用vim编辑器时,如果编辑器没有正常退出就会生成一个暂存文件,…

车载开发前景广阔,分析市场变化赢未来

车载开发行业在未来具有广阔的前景,主要受益于汽车科技的快速发展和智能出行概念的普及。随着科技的不断进步,车载开发行业将继续受益于创新和需求的推动。车载行业的分布未来也是非常之多,分析现在的车载智能发展,可以得出以下车…

安达发|制造企业生产排产现状和APS系统的解决方案

随着市场竞争的加剧,制造业企业面临着生产效率、成本控制和客户满意度等方面的巟大压力。在这种背景下,生产排产作为制造业的核心环节,对企业的生产经营具有重要意义。本文将针对制造业的生产排产现状进行分析,并提出相应的APS系统…