4.23 双指针链表,数组

1.双指针链表()
1.1 合并两个有序链表
关键点:创建两个指针和一个虚拟头结点
(单链表问题一个虚拟头结点会很方便(指向的值无所谓)
1.2 单链表的分解
key:创建两个虚拟头结点,用来存放不同种类的数据(创造一个新链表的时候常用虚拟头结点)
1.3 合并k个有序链表
key:优先级队列(二叉堆)todo
1.4单链表的倒数第k个结点(要学会用虚拟头结点,可以少讨论很多冗余的情况)
双指针,一个先走k步,然后两个指针再一起走
1.5 单链表的中点
两个指针(一个速度是另一个的两倍)
1.6 判断链表是否包含环
key:快慢指针能否重合
1.7 找环的起点
通过数学分析,让重合时slow=start,fast=slow,交点就是起点
1.8 两个链表是否相交(没懂结点的定义)
key:走到A链表的末端之后走B链表,这样可以让走到结点之前步数一样

2 双指针数组
只要一个数组有序就应该想到双指针
2.1 最长回文字符串
这道题可以通过一个函数巧妙将回文串的两种情况(奇数个字符和偶数个字符)都表示出来

posted @ 2025-04-24 00:04  Toby0919  阅读(7)  评论(0)    收藏  举报