代码随想录-刷题第五天

链表题目总结

链表基本操作

对链表进行增删改查等基本操作。注意,很多链表的题目使用虚拟头结点 操作起来会更加方便。每次对应头结点的情况都要单独处理,所以使用虚拟头结点的技巧,就可以解决这个问题

反转链表

可以使用头插法 ,也可以直接修改节点的指向(这种思想有两种实现方法,迭代和递归)

删除倒数第n个节点

采用虚拟头结点和双指针的思想,可以一次遍历就找到要删除的节点。

链表相交

如果用两个指针 p1p2 分别在两条链表上前进,我们可以让 p1 遍历完链表 A 之后开始遍历链表 B,让 p2 遍历完链表 B 之后开始遍历链表 A,这样相当于「逻辑上」两条链表接在了一起。如果这样进行拼接,就可以让 p1p2 同时进入公共部分,也就是同时到达相交节点 c1

环形链表

定义快慢指针,慢指针每次走1步,快指针每次走2步。首先判断是否有环,如果有环的话,快指针一定先进环,慢指针进环后第一圈快慢指针一定相遇 ,没有环的话返回null。如果相遇,再定义两个指针一个从相遇的节点开始,一个从第一个节点开始,每次都各走一步,两个指针再次相遇的时候就是入环节点。


相关推荐
维构lbs智能定位1 天前
北斗卫星导航定位从核心框架到定位流程详解(一)
算法·北斗卫星导航定位系统
byzh_rc1 天前
[算法设计与分析-从入门到入土] 动态规划
算法·动态规划
程序员阿鹏1 天前
@Autowired和@Resource的区别
java·开发语言·spring
Halo_tjn1 天前
Java List集合知识点
java·开发语言·windows·算法·list
一 乐1 天前
健身房预约|基于springboot + vue健身房预约小程序系统(源码+数据库+文档)
java·数据库·vue.js·spring boot·后端·学习·小程序
CC.GG1 天前
【C++】哈希表的实现
java·c++·散列表
Slow菜鸟1 天前
Java基础 | 布隆过滤器
java·开发语言
云飞云共享云桌面1 天前
河北某机器人工厂8个研发设计共享一台SolidWorks云主机
运维·服务器·网络·数据库·算法·性能优化·机器人
元亓亓亓1 天前
LeetCode热题100--152. 乘积最大子数组--中等
算法·leetcode·职场和发展
执笔论英雄1 天前
【RL】Slime训练流程
算法