前言:什么是双指针
砸门用大白话来说,就是两个定位装置。
那么这两个定位装置有什么用呢?那肯定去定位撒,而且更高级的是这装置上面还有摄像头,可以看见当前所在位置的情况。
现在我们给两个装置各自赋予动力,先赋予相同的动力(及移动速度一样)
现在这两个装置具备了行动和观察的作用了。那么我们就将他们比作小摩托。
两个摩托肯定有方向行驶:①相对 ②相向
一、相同速度
①相对
这样同速相对走肯定比单个箭头走完这段路要快。因为我们的小摩托可是有查看功能,就意味着双指针同速相对走比单个查看完一个数组要快一倍!
②相向
这样同速相向走就意义不大了,本来一个指针都能解决为什么要要用两个,如果有人知道这样做的意义,可以留在评论区。
二、不同速度(如第一个指针是第二个指针的两倍)
①相对
他们相遇的位置会在3/4处,只要速度倍数不一样,那么它相遇的位置就不一样!具体题目具体分析!
②相向
这个经典好处就是:对于链表,当我们第二个指针走到最后位,第一个指针刚好处于中间,链表取中间值。
三、具体的问题要具体分析,上面是最基本的,多刷题体验感受就领悟到精髓了
四、干货:双指针刷题列表
1.有序数组的TwoSum(力扣 167) 博主的笔记思路及代码讲解:https://blog.csdn.net/qq_40262372/article/details/112562924
2.平方数之和(力扣 633) 博主的笔记思路及代码讲解:https://blog.csdn.net/qq_40262372/article/details/112565550
3.反转字符串中的元音字符(力扣 345) 博主的笔记思路及代码讲解:https://blog.csdn.net/qq_40262372/article/details/112566109
4.验证回文字符串(力扣680) 博主的笔记思路及代码讲解:https://blog.csdn.net/qq_40262372/article/details/112566358
5.合并两个有序数组(力扣88) 博主的笔记思路及代码讲解:https://blog.csdn.net/qq_40262372/article/details/112566939
6.环形链表(力扣141) 博主的笔记思路及代码讲解:https://blog.csdn.net/qq_40262372/article/details/112567414
7.通过删除字母匹配到字典里最长的单词(力扣524)
博主的笔记思路及代码讲解:https://blog.csdn.net/qq_40262372/article/details/112567741
五、各种类型的高频面试题汇总:
https://blog.csdn.net/qq_40262372/article/details/112556249
六、如有疑问可加QQ群讨论:725936761 博主免费答疑
欢迎大家一起讨论进步。后续遇到相似的题会继续更新!
群里已有字节、滴滴大佬,可帮忙内推!也欢迎其他大厂的工作人士进群!帮忙内推~
为了鼓励大家坚持,当天打卡人数超过一半,群主发一个小红包(群主也是学生),激励大家坚持下去!希望以后找工作的时候大家能互捞一下~~~
B站视频讲解如何三个月学习JAVA拿到实习Offer: