ToB企服应用市场:ToB评测及商务社交产业平台

标题: 双指针小小结(数组版) [打印本页]

作者: 半亩花草    时间: 2023-3-20 11:22
标题: 双指针小小结(数组版)
  双指针用的好,力扣刷题没烦恼~  话不多说,干货直接塞:1.双指针的分类

  根据自己所刷代码随想录的一点点题目,以及学习算法小抄的解题技巧,我注意到双指针分为以下几种类型:

 
 
会有所遗漏,初刷题目,见谅
 
   接下来我会按照我所刷题目的特点进行具体说明。ps:把同向理解成相向,但经过百度发现和相对意思一致,很抱歉orz
2.快慢指针

  fast负责对数组进行快速遍历,寻找符合条件的元素,slow则根据fast所寻找元素进行更新,即利用一个for循环完成两个for循环的任务,降低了复杂度。

搜的图,思想很清晰
  做题时必须要确定何时让快指针停下以更新慢指针的索引,角度不同对于代码的难度也不同。3.滑动窗口

  第一次接触这么有趣的算法!滑动窗口如名字所表示,通过调整双指针的位置动态的对数组中的元素进行增删操作,类似老人用筛子筛谷壳的操作,只不过它必须是连续的。

 
   代码也很有意思,209.长度最小的子数组就利用了这个思想,关键在于如何确定一个for循环应该是表示起始位置还是终止位置,本题中for循环确定为终止位置,否则解法就与暴力解法无疑了,我个人觉得最妙的是这部分代码:

 
   首先,运算符的使用让代码好看许多,另外,nums[i++]的确是我没想到的表示方法,仅仅三行就把滑动窗口的思想表述了出来,美哉!
  另外就是一开始所设置的量----int result = INT32_MAX; 其实我并不理解什么意思,后来才知道,初始化时也可以是其他值,但是必须要比数组的长度大,否则在比较子数组时就会被划进去。因此保险起见,设置MAX最为稳妥。
4.左右指针

  二分查找的思想与此有关,通过面对面移动指针最终找到目标,我刷的题不多,仅仅知道这个orz.
 5.碎碎念时间

  没错我又要碎碎念啦!今天是加入代码随想录第五天,第四天的任务还没做,补博客中,很明显感觉到后面的链表专题开始吃力了,一定要坚持,双指针好有意思,我刷题开始上瘾咯!
  感谢观看呀~
 

免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!




欢迎光临 ToB企服应用市场:ToB评测及商务社交产业平台 (https://dis.qidao123.com/) Powered by Discuz! X3.4