mirror of
https://github.com/youngyangyang04/leetcode-master.git
synced 2025-07-08 16:54:50 +08:00
剑指Offer05~数组总结连接更新
This commit is contained in:
@ -9,7 +9,7 @@
|
|||||||
|
|
||||||
# 题目:剑指Offer 05.替换空格
|
# 题目:剑指Offer 05.替换空格
|
||||||
|
|
||||||
https://leetcode-cn.com/problems/ti-huan-kong-ge-lcof/
|
[力扣题目链接](https://leetcode-cn.com/problems/ti-huan-kong-ge-lcof/)
|
||||||
|
|
||||||
请实现一个函数,把字符串 s 中的每个空格替换成"%20"。
|
请实现一个函数,把字符串 s 中的每个空格替换成"%20"。
|
||||||
|
|
||||||
@ -81,12 +81,12 @@ public:
|
|||||||
|
|
||||||
此时算上本题,我们已经做了七道双指针相关的题目了分别是:
|
此时算上本题,我们已经做了七道双指针相关的题目了分别是:
|
||||||
|
|
||||||
* [27.移除元素](https://mp.weixin.qq.com/s/RMkulE4NIb6XsSX83ra-Ww)
|
* [27.移除元素](https://programmercarl.com/0027.移除元素.html)
|
||||||
* [15.三数之和](https://mp.weixin.qq.com/s/QfTNEByq1YlNSXRKEumwHg)
|
* [15.三数之和](https://programmercarl.com/0015.三数之和.html)
|
||||||
* [18.四数之和](https://mp.weixin.qq.com/s/SBU3THi1Kv6Sar7htqCB2Q)
|
* [18.四数之和](https://programmercarl.com/0018.四数之和.html)
|
||||||
* [206.翻转链表](https://mp.weixin.qq.com/s/ckEvIVGcNLfrz6OLOMoT0A)
|
* [206.翻转链表](https://programmercarl.com/0206.翻转链表.html)
|
||||||
* [142.环形链表II](https://mp.weixin.qq.com/s/gt_VH3hQTqNxyWcl1ECSbQ)
|
* [142.环形链表II](https://programmercarl.com/0142.环形链表II.html)
|
||||||
* [344.反转字符串](https://mp.weixin.qq.com/s/_rNm66OJVl92gBDIbGpA3w)
|
* [344.反转字符串](https://programmercarl.com/0344.反转字符串.html)
|
||||||
|
|
||||||
# 拓展
|
# 拓展
|
||||||
|
|
||||||
|
@ -11,11 +11,10 @@
|
|||||||
|
|
||||||
# 题目:剑指Offer58-II.左旋转字符串
|
# 题目:剑指Offer58-II.左旋转字符串
|
||||||
|
|
||||||
https://leetcode-cn.com/problems/zuo-xuan-zhuan-zi-fu-chuan-lcof/
|
[力扣题目链接](https://leetcode-cn.com/problems/zuo-xuan-zhuan-zi-fu-chuan-lcof/)
|
||||||
|
|
||||||
字符串的左旋转操作是把字符串前面的若干个字符转移到字符串的尾部。请定义一个函数实现字符串左旋转操作的功能。比如,输入字符串"abcdefg"和数字2,该函数将返回左旋转两位得到的结果"cdefgab"。
|
字符串的左旋转操作是把字符串前面的若干个字符转移到字符串的尾部。请定义一个函数实现字符串左旋转操作的功能。比如,输入字符串"abcdefg"和数字2,该函数将返回左旋转两位得到的结果"cdefgab"。
|
||||||
|
|
||||||
|
|
||||||
示例 1:
|
示例 1:
|
||||||
输入: s = "abcdefg", k = 2
|
输入: s = "abcdefg", k = 2
|
||||||
输出: "cdefgab"
|
输出: "cdefgab"
|
||||||
@ -34,7 +33,7 @@ https://leetcode-cn.com/problems/zuo-xuan-zhuan-zi-fu-chuan-lcof/
|
|||||||
不能使用额外空间的话,模拟在本串操作要实现左旋转字符串的功能还是有点困难的。
|
不能使用额外空间的话,模拟在本串操作要实现左旋转字符串的功能还是有点困难的。
|
||||||
|
|
||||||
|
|
||||||
那么我们可以想一下上一题目[字符串:花式反转还不够!](https://mp.weixin.qq.com/s/4j6vPFHkFAXnQhmSkq2X9g)中讲过,使用整体反转+局部反转就可以实现,反转单词顺序的目的。
|
那么我们可以想一下上一题目[字符串:花式反转还不够!](https://programmercarl.com/0151.翻转字符串里的单词.html)中讲过,使用整体反转+局部反转就可以实现,反转单词顺序的目的。
|
||||||
|
|
||||||
这道题目也非常类似,依然可以通过局部反转+整体反转 达到左旋转的目的。
|
这道题目也非常类似,依然可以通过局部反转+整体反转 达到左旋转的目的。
|
||||||
|
|
||||||
@ -76,13 +75,13 @@ public:
|
|||||||
|
|
||||||
此时我们已经反转好多次字符串了,来一起回顾一下吧。
|
此时我们已经反转好多次字符串了,来一起回顾一下吧。
|
||||||
|
|
||||||
在这篇文章[344.反转字符串](https://mp.weixin.qq.com/s/_rNm66OJVl92gBDIbGpA3w),第一次讲到反转一个字符串应该怎么做,使用了双指针法。
|
在这篇文章[344.反转字符串](https://programmercarl.com/0344.反转字符串.html),第一次讲到反转一个字符串应该怎么做,使用了双指针法。
|
||||||
|
|
||||||
然后发现[541. 反转字符串II](https://mp.weixin.qq.com/s/pzXt6PQ029y7bJ9YZB2mVQ),这里开始给反转加上了一些条件,当需要固定规律一段一段去处理字符串的时候,要想想在在for循环的表达式上做做文章。
|
然后发现[541. 反转字符串II](https://programmercarl.com/0541.反转字符串II.html),这里开始给反转加上了一些条件,当需要固定规律一段一段去处理字符串的时候,要想想在在for循环的表达式上做做文章。
|
||||||
|
|
||||||
后来在[151.翻转字符串里的单词](https://mp.weixin.qq.com/s/4j6vPFHkFAXnQhmSkq2X9g)中,要对一句话里的单词顺序进行反转,发现先整体反转再局部反转 是一个很妙的思路。
|
后来在[151.翻转字符串里的单词](https://programmercarl.com/0151.翻转字符串里的单词.html)中,要对一句话里的单词顺序进行反转,发现先整体反转再局部反转 是一个很妙的思路。
|
||||||
|
|
||||||
最后再讲到本题,本题则是先局部反转再 整体反转,与[151.翻转字符串里的单词](https://mp.weixin.qq.com/s/4j6vPFHkFAXnQhmSkq2X9g)类似,但是也是一种新的思路。
|
最后再讲到本题,本题则是先局部反转再 整体反转,与[151.翻转字符串里的单词](https://programmercarl.com/0151.翻转字符串里的单词.html)类似,但是也是一种新的思路。
|
||||||
|
|
||||||
好了,反转字符串一共就介绍到这里,相信大家此时对反转字符串的常见操作已经很了解了。
|
好了,反转字符串一共就介绍到这里,相信大家此时对反转字符串的常见操作已经很了解了。
|
||||||
|
|
||||||
|
@ -12,7 +12,7 @@
|
|||||||
|
|
||||||
# 数组篇
|
# 数组篇
|
||||||
|
|
||||||
在[数组:就移除个元素很难么?](https://mp.weixin.qq.com/s/RMkulE4NIb6XsSX83ra-Ww)中,原地移除数组上的元素,我们说到了数组上的元素,不能真正的删除,只能覆盖。
|
在[数组:就移除个元素很难么?](https://programmercarl.com/0027.移除元素.html)中,原地移除数组上的元素,我们说到了数组上的元素,不能真正的删除,只能覆盖。
|
||||||
|
|
||||||
一些同学可能会写出如下代码(伪代码):
|
一些同学可能会写出如下代码(伪代码):
|
||||||
|
|
||||||
@ -30,11 +30,11 @@ for (int i = 0; i < array.size(); i++) {
|
|||||||
|
|
||||||
# 字符串篇
|
# 字符串篇
|
||||||
|
|
||||||
在[字符串:这道题目,使用库函数一行代码搞定](https://mp.weixin.qq.com/s/_rNm66OJVl92gBDIbGpA3w)中讲解了反转字符串,注意这里强调要原地反转,要不然就失去了题目的意义。
|
在[字符串:这道题目,使用库函数一行代码搞定](https://programmercarl.com/0344.反转字符串.html)中讲解了反转字符串,注意这里强调要原地反转,要不然就失去了题目的意义。
|
||||||
|
|
||||||
使用双指针法,**定义两个指针(也可以说是索引下表),一个从字符串前面,一个从字符串后面,两个指针同时向中间移动,并交换元素。**,时间复杂度是O(n)。
|
使用双指针法,**定义两个指针(也可以说是索引下表),一个从字符串前面,一个从字符串后面,两个指针同时向中间移动,并交换元素。**,时间复杂度是O(n)。
|
||||||
|
|
||||||
在[替换空格](https://mp.weixin.qq.com/s/69HNjR4apcRSAo_KyknPjA) 中介绍使用双指针填充字符串的方法,如果想把这道题目做到极致,就不要只用额外的辅助空间了!
|
在[替换空格](https://programmercarl.com/剑指Offer05.替换空格.html) 中介绍使用双指针填充字符串的方法,如果想把这道题目做到极致,就不要只用额外的辅助空间了!
|
||||||
|
|
||||||
思路就是**首先扩充数组到每个空格替换成"%20"之后的大小。然后双指针从后向前替换空格。**
|
思路就是**首先扩充数组到每个空格替换成"%20"之后的大小。然后双指针从后向前替换空格。**
|
||||||
|
|
||||||
@ -44,7 +44,7 @@ for (int i = 0; i < array.size(); i++) {
|
|||||||
|
|
||||||
**其实很多数组(字符串)填充类的问题,都可以先预先给数组扩容带填充后的大小,然后在从后向前进行操作。**
|
**其实很多数组(字符串)填充类的问题,都可以先预先给数组扩容带填充后的大小,然后在从后向前进行操作。**
|
||||||
|
|
||||||
那么在[字符串:花式反转还不够!](https://mp.weixin.qq.com/s/4j6vPFHkFAXnQhmSkq2X9g)中,我们使用双指针法,用O(n)的时间复杂度完成字符串删除类的操作,因为题目要产出冗余空格。
|
那么在[字符串:花式反转还不够!](https://programmercarl.com/0151.翻转字符串里的单词.html)中,我们使用双指针法,用O(n)的时间复杂度完成字符串删除类的操作,因为题目要产出冗余空格。
|
||||||
|
|
||||||
**在删除冗余空格的过程中,如果不注意代码效率,很容易写成了O(n^2)的时间复杂度。其实使用双指针法O(n)就可以搞定。**
|
**在删除冗余空格的过程中,如果不注意代码效率,很容易写成了O(n^2)的时间复杂度。其实使用双指针法O(n)就可以搞定。**
|
||||||
|
|
||||||
@ -54,19 +54,19 @@ for (int i = 0; i < array.size(); i++) {
|
|||||||
|
|
||||||
翻转链表是现场面试,白纸写代码的好题,考察了候选者对链表以及指针的熟悉程度,而且代码也不长,适合在白纸上写。
|
翻转链表是现场面试,白纸写代码的好题,考察了候选者对链表以及指针的熟悉程度,而且代码也不长,适合在白纸上写。
|
||||||
|
|
||||||
在[链表:听说过两天反转链表又写不出来了?](https://mp.weixin.qq.com/s/ckEvIVGcNLfrz6OLOMoT0A)中,讲如何使用双指针法来翻转链表,**只需要改变链表的next指针的指向,直接将链表反转 ,而不用重新定义一个新的链表。**
|
在[链表:听说过两天反转链表又写不出来了?](https://programmercarl.com/0206.翻转链表.html)中,讲如何使用双指针法来翻转链表,**只需要改变链表的next指针的指向,直接将链表反转 ,而不用重新定义一个新的链表。**
|
||||||
|
|
||||||
思路还是很简单的,代码也不长,但是想在白纸上一次性写出bugfree的代码,并不是容易的事情。
|
思路还是很简单的,代码也不长,但是想在白纸上一次性写出bugfree的代码,并不是容易的事情。
|
||||||
|
|
||||||
在链表中求环,应该是双指针在链表里最经典的应用,在[链表:环找到了,那入口呢?](https://mp.weixin.qq.com/s/gt_VH3hQTqNxyWcl1ECSbQ)中讲解了如何通过双指针判断是否有环,而且还要找到环的入口。
|
在链表中求环,应该是双指针在链表里最经典的应用,在[链表:环找到了,那入口呢?](https://programmercarl.com/0142.环形链表II.html)中讲解了如何通过双指针判断是否有环,而且还要找到环的入口。
|
||||||
|
|
||||||
**使用快慢指针(双指针法),分别定义 fast 和 slow指针,从头结点出发,fast指针每次移动两个节点,slow指针每次移动一个节点,如果 fast 和 slow指针在途中相遇 ,说明这个链表有环。**
|
**使用快慢指针(双指针法),分别定义 fast 和 slow指针,从头结点出发,fast指针每次移动两个节点,slow指针每次移动一个节点,如果 fast 和 slow指针在途中相遇 ,说明这个链表有环。**
|
||||||
|
|
||||||
那么找到环的入口,其实需要点简单的数学推理,我在文章中把找环的入口清清楚楚的推理的一遍,如果对找环入口不够清楚的同学建议自己看一看[链表:环找到了,那入口呢?](https://mp.weixin.qq.com/s/gt_VH3hQTqNxyWcl1ECSbQ)。
|
那么找到环的入口,其实需要点简单的数学推理,我在文章中把找环的入口清清楚楚的推理的一遍,如果对找环入口不够清楚的同学建议自己看一看[链表:环找到了,那入口呢?](https://programmercarl.com/0142.环形链表II.html)。
|
||||||
|
|
||||||
# N数之和篇
|
# N数之和篇
|
||||||
|
|
||||||
在[哈希表:解决了两数之和,那么能解决三数之和么?](https://mp.weixin.qq.com/s/QfTNEByq1YlNSXRKEumwHg)中,讲到使用哈希法可以解决1.两数之和的问题
|
在[哈希表:解决了两数之和,那么能解决三数之和么?](https://programmercarl.com/0015.三数之和.html)中,讲到使用哈希法可以解决1.两数之和的问题
|
||||||
|
|
||||||
其实使用双指针也可以解决1.两数之和的问题,只不过1.两数之和求的是两个元素的下标,没法用双指针,如果改成求具体两个元素的数值就可以了,大家可以尝试用双指针做一个leetcode上两数之和的题目,就可以体会到我说的意思了。
|
其实使用双指针也可以解决1.两数之和的问题,只不过1.两数之和求的是两个元素的下标,没法用双指针,如果改成求具体两个元素的数值就可以了,大家可以尝试用双指针做一个leetcode上两数之和的题目,就可以体会到我说的意思了。
|
||||||
|
|
||||||
@ -82,7 +82,7 @@ for (int i = 0; i < array.size(); i++) {
|
|||||||
|
|
||||||
只用双指针法时间复杂度为O(n^2),但比哈希法的O(n^2)效率高得多,哈希法在使用两层for循环的时候,能做的剪枝操作很有限。
|
只用双指针法时间复杂度为O(n^2),但比哈希法的O(n^2)效率高得多,哈希法在使用两层for循环的时候,能做的剪枝操作很有限。
|
||||||
|
|
||||||
在[双指针法:一样的道理,能解决四数之和](https://mp.weixin.qq.com/s/SBU3THi1Kv6Sar7htqCB2Q)中,讲到了四数之和,其实思路是一样的,**在三数之和的基础上再套一层for循环,依然是使用双指针法。**
|
在[双指针法:一样的道理,能解决四数之和](https://programmercarl.com/0018.四数之和.html)中,讲到了四数之和,其实思路是一样的,**在三数之和的基础上再套一层for循环,依然是使用双指针法。**
|
||||||
|
|
||||||
对于三数之和使用双指针法就是将原本暴力O(n^3)的解法,降为O(n^2)的解法,四数之和的双指针解法就是将原本暴力O(n^4)的解法,降为O(n^3)的解法。
|
对于三数之和使用双指针法就是将原本暴力O(n^3)的解法,降为O(n^2)的解法,四数之和的双指针解法就是将原本暴力O(n^4)的解法,降为O(n^3)的解法。
|
||||||
|
|
||||||
|
@ -63,7 +63,7 @@
|
|||||||
|
|
||||||
## 二分法
|
## 二分法
|
||||||
|
|
||||||
[数组:每次遇到二分法,都是一看就会,一写就废](https://mp.weixin.qq.com/s/fCf5QbPDtE6SSlZ1yh_q8Q)
|
[数组:每次遇到二分法,都是一看就会,一写就废](https://programmercarl.com/0704.二分查找.html)
|
||||||
|
|
||||||
这道题目呢,考察的数据的基本操作,思路很简单,但是在通过率在简单题里并不高,不要轻敌。
|
这道题目呢,考察的数据的基本操作,思路很简单,但是在通过率在简单题里并不高,不要轻敌。
|
||||||
|
|
||||||
@ -79,7 +79,7 @@
|
|||||||
|
|
||||||
## 双指针法
|
## 双指针法
|
||||||
|
|
||||||
* [数组:就移除个元素很难么?](https://mp.weixin.qq.com/s/wj0T-Xs88_FHJFwayElQlA)
|
* [数组:就移除个元素很难么?](https://programmercarl.com/0027.移除元素.html)
|
||||||
|
|
||||||
双指针法(快慢指针法):**通过一个快指针和慢指针在一个for循环下完成两个for循环的工作。**
|
双指针法(快慢指针法):**通过一个快指针和慢指针在一个for循环下完成两个for循环的工作。**
|
||||||
|
|
||||||
@ -95,7 +95,7 @@
|
|||||||
|
|
||||||
## 滑动窗口
|
## 滑动窗口
|
||||||
|
|
||||||
* [数组:滑动窗口拯救了你](https://mp.weixin.qq.com/s/UrZynlqi4QpyLlLhBPglyg)
|
* [数组:滑动窗口拯救了你](https://programmercarl.com/0209.长度最小的子数组.html)
|
||||||
|
|
||||||
本题介绍了数组操作中的另一个重要思想:滑动窗口。
|
本题介绍了数组操作中的另一个重要思想:滑动窗口。
|
||||||
|
|
||||||
@ -111,7 +111,7 @@
|
|||||||
|
|
||||||
## 模拟行为
|
## 模拟行为
|
||||||
|
|
||||||
* [数组:这个循环可以转懵很多人!](https://mp.weixin.qq.com/s/KTPhaeqxbMK9CxHUUgFDmg)
|
* [数组:这个循环可以转懵很多人!](https://programmercarl.com/0059.螺旋矩阵II.html)
|
||||||
|
|
||||||
模拟类的题目在数组中很常见,不涉及到什么算法,就是单纯的模拟,十分考察大家对代码的掌控能力。
|
模拟类的题目在数组中很常见,不涉及到什么算法,就是单纯的模拟,十分考察大家对代码的掌控能力。
|
||||||
|
|
||||||
|
@ -10,7 +10,7 @@
|
|||||||
|
|
||||||
## 链表的理论基础
|
## 链表的理论基础
|
||||||
|
|
||||||
在这篇文章[关于链表,你该了解这些!](https://mp.weixin.qq.com/s/fDGMmLrW7ZHlzkzlf_dZkw)中,介绍了如下几点:
|
在这篇文章[关于链表,你该了解这些!](https://programmercarl.com/链表理论基础.html)中,介绍了如下几点:
|
||||||
|
|
||||||
* 链表的种类主要为:单链表,双链表,循环链表
|
* 链表的种类主要为:单链表,双链表,循环链表
|
||||||
* 链表的存储方式:链表的节点在内存中是分散存储的,通过指针连在一起。
|
* 链表的存储方式:链表的节点在内存中是分散存储的,通过指针连在一起。
|
||||||
@ -23,17 +23,17 @@
|
|||||||
|
|
||||||
### 虚拟头结点
|
### 虚拟头结点
|
||||||
|
|
||||||
在[链表:听说用虚拟头节点会方便很多?](https://mp.weixin.qq.com/s/L5aanfALdLEwVWGvyXPDqA)中,我们讲解了链表操作中一个非常总要的技巧:虚拟头节点。
|
在[链表:听说用虚拟头节点会方便很多?](https://programmercarl.com/0203.移除链表元素.html)中,我们讲解了链表操作中一个非常总要的技巧:虚拟头节点。
|
||||||
|
|
||||||
链表的一大问题就是操作当前节点必须要找前一个节点才能操作。这就造成了,头结点的尴尬,因为头结点没有前一个节点了。
|
链表的一大问题就是操作当前节点必须要找前一个节点才能操作。这就造成了,头结点的尴尬,因为头结点没有前一个节点了。
|
||||||
|
|
||||||
**每次对应头结点的情况都要单独处理,所以使用虚拟头结点的技巧,就可以解决这个问题**。
|
**每次对应头结点的情况都要单独处理,所以使用虚拟头结点的技巧,就可以解决这个问题**。
|
||||||
|
|
||||||
在[链表:听说用虚拟头节点会方便很多?](https://mp.weixin.qq.com/s/L5aanfALdLEwVWGvyXPDqA)中,我给出了用虚拟头结点和没用虚拟头结点的代码,大家对比一下就会发现,使用虚拟头结点的好处。
|
在[链表:听说用虚拟头节点会方便很多?](https://programmercarl.com/0203.移除链表元素.html)中,我给出了用虚拟头结点和没用虚拟头结点的代码,大家对比一下就会发现,使用虚拟头结点的好处。
|
||||||
|
|
||||||
### 链表的基本操作
|
### 链表的基本操作
|
||||||
|
|
||||||
在[链表:一道题目考察了常见的五个操作!](https://mp.weixin.qq.com/s/jnC_LAD0ZKCsj-FZc57F1g)中,我们通设计链表把链表常见的五个操作练习了一遍。
|
在[链表:一道题目考察了常见的五个操作!](https://programmercarl.com/0707.设计链表.html)中,我们通设计链表把链表常见的五个操作练习了一遍。
|
||||||
|
|
||||||
这是练习链表基础操作的非常好的一道题目,考察了:
|
这是练习链表基础操作的非常好的一道题目,考察了:
|
||||||
|
|
||||||
@ -49,13 +49,13 @@
|
|||||||
|
|
||||||
### 反转链表
|
### 反转链表
|
||||||
|
|
||||||
在[链表:听说过两天反转链表又写不出来了?](https://mp.weixin.qq.com/s/ckEvIVGcNLfrz6OLOMoT0A)中,讲解了如何反转链表。
|
在[链表:听说过两天反转链表又写不出来了?](https://programmercarl.com/0206.翻转链表.html)中,讲解了如何反转链表。
|
||||||
|
|
||||||
因为反转链表的代码相对简单,有的同学可能直接背下来了,但一写还是容易出问题。
|
因为反转链表的代码相对简单,有的同学可能直接背下来了,但一写还是容易出问题。
|
||||||
|
|
||||||
反转链表是面试中高频题目,很考察面试者对链表操作的熟练程度。
|
反转链表是面试中高频题目,很考察面试者对链表操作的熟练程度。
|
||||||
|
|
||||||
我在[文章](https://mp.weixin.qq.com/s/ckEvIVGcNLfrz6OLOMoT0A)中,给出了两种反转的方式,迭代法和递归法。
|
我在[文章](https://programmercarl.com/0206.翻转链表.html)中,给出了两种反转的方式,迭代法和递归法。
|
||||||
|
|
||||||
建议大家先学透迭代法,然后再看递归法,因为递归法比较绕,如果迭代还写不明白,递归基本也写不明白了。
|
建议大家先学透迭代法,然后再看递归法,因为递归法比较绕,如果迭代还写不明白,递归基本也写不明白了。
|
||||||
|
|
||||||
@ -63,16 +63,16 @@
|
|||||||
|
|
||||||
### 删除倒数第N个节点
|
### 删除倒数第N个节点
|
||||||
|
|
||||||
在[链表:删除链表倒数第N个节点,怎么删?](https://mp.weixin.qq.com/s/gxu65X1343xW_sBrkTz0Eg)中我们结合虚拟头结点 和 双指针法来移除链表倒数第N个节点。
|
在[链表:删除链表倒数第N个节点,怎么删?](https://programmercarl.com/0019.删除链表的倒数第N个节点.html)中我们结合虚拟头结点 和 双指针法来移除链表倒数第N个节点。
|
||||||
|
|
||||||
|
|
||||||
### 链表相交
|
### 链表相交
|
||||||
|
|
||||||
[链表:链表相交](https://mp.weixin.qq.com/s/BhfFfaGvt9Zs7UmH4YehZw)使用双指针来找到两个链表的交点(引用完全相同,即:内存地址完全相同的交点)
|
[链表:链表相交](https://programmercarl.com/面试题02.07.链表相交.html)使用双指针来找到两个链表的交点(引用完全相同,即:内存地址完全相同的交点)
|
||||||
|
|
||||||
## 环形链表
|
## 环形链表
|
||||||
|
|
||||||
在[链表:环找到了,那入口呢?](https://mp.weixin.qq.com/s/gt_VH3hQTqNxyWcl1ECSbQ)中,讲解了在链表如何找环,以及如何找环的入口位置。
|
在[链表:环找到了,那入口呢?](https://programmercarl.com/0142.环形链表II.html)中,讲解了在链表如何找环,以及如何找环的入口位置。
|
||||||
|
|
||||||
这道题目可以说是链表的比较难的题目了。 但代码却十分简洁,主要在于一些数学证明。
|
这道题目可以说是链表的比较难的题目了。 但代码却十分简洁,主要在于一些数学证明。
|
||||||
|
|
||||||
@ -80,15 +80,15 @@
|
|||||||
|
|
||||||
考察链表的操作其实就是考察指针的操作,是面试中的常见类型。
|
考察链表的操作其实就是考察指针的操作,是面试中的常见类型。
|
||||||
|
|
||||||
链表篇中开头介绍[链表理论知识](https://mp.weixin.qq.com/s/slM1CH5Ew9XzK93YOQYSjA),然后分别通过经典题目介绍了如下知识点:
|
链表篇中开头介绍[链表理论知识](https://programmercarl.com/0203.移除链表元素.html),然后分别通过经典题目介绍了如下知识点:
|
||||||
|
|
||||||
1. [关于链表,你该了解这些!](https://mp.weixin.qq.com/s/fDGMmLrW7ZHlzkzlf_dZkw)
|
1. [关于链表,你该了解这些!](https://programmercarl.com/链表理论基础.html)
|
||||||
2. [虚拟头结点的技巧](https://mp.weixin.qq.com/s/L5aanfALdLEwVWGvyXPDqA)
|
2. [虚拟头结点的技巧](https://programmercarl.com/0203.移除链表元素.html)
|
||||||
3. [链表的增删改查](https://mp.weixin.qq.com/s/jnC_LAD0ZKCsj-FZc57F1g)
|
3. [链表的增删改查](https://programmercarl.com/0707.设计链表.html)
|
||||||
4. [反转一个链表](https://mp.weixin.qq.com/s/ckEvIVGcNLfrz6OLOMoT0A)
|
4. [反转一个链表](https://programmercarl.com/0206.翻转链表.html)
|
||||||
5. [删除倒数第N个节点](https://mp.weixin.qq.com/s/gxu65X1343xW_sBrkTz0Eg)
|
5. [删除倒数第N个节点](https://programmercarl.com/0019.删除链表的倒数第N个节点.html)
|
||||||
6. [链表相交](https://mp.weixin.qq.com/s/BhfFfaGvt9Zs7UmH4YehZw)
|
6. [链表相交](https://programmercarl.com/面试题02.07.链表相交.html)
|
||||||
7. [有否环形,以及环的入口](https://mp.weixin.qq.com/s/gt_VH3hQTqNxyWcl1ECSbQ)
|
7. [有否环形,以及环的入口](https://programmercarl.com/0142.环形链表II.html)
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
@ -9,7 +9,7 @@
|
|||||||
|
|
||||||
## 面试题 02.07. 链表相交
|
## 面试题 02.07. 链表相交
|
||||||
|
|
||||||
题目链接:https://leetcode-cn.com/problems/intersection-of-two-linked-lists-lcci/
|
[力扣题目链接](https://leetcode-cn.com/problems/intersection-of-two-linked-lists-lcci/)
|
||||||
|
|
||||||
给定两个(单向)链表,判定它们是否相交并返回交点。请注意相交的定义基于节点的引用,而不是基于节点的值。换句话说,如果一个链表的第k个节点与另一个链表的第j个节点是同一节点(引用完全相同),则这两个链表相交。
|
给定两个(单向)链表,判定它们是否相交并返回交点。请注意相交的定义基于节点的引用,而不是基于节点的值。换句话说,如果一个链表的第k个节点与另一个链表的第j个节点是同一节点(引用完全相同),则这两个链表相交。
|
||||||
|
|
||||||
|
Reference in New Issue
Block a user