数据结构与算法 - 双指针法的应用

应用1:寻找和为target的两个数

167. 两数之和 II - 输入有序数组

题目链接:https://leetcode-cn.com/problems/two-sum-ii-input-array-is-sorted/

应用2:判断链表是否有环

142. 环形链表 II

题目链接:https://leetcode-cn.com/problems/linked-list-cycle-ii/

287. 寻找重复数

题目链接:https://leetcode-cn.com/problems/find-the-duplicate-number/

应用3:荷兰国旗问题

75. 颜色分类

题目链接:https://leetcode-cn.com/problems/sort-colors/

应用4:三数之和

15. 三数之和

题目链接:https://leetcode-cn.com/problems/3sum/

16. 最接近的三数之和

题目链接:https://leetcode-cn.com/problems/3sum-closest/

滑动窗口

「滑动窗口」是一类使用「双指针」技巧,通过两个变量在数组上同向交替移动解决问题的算法。这一类问题的思考路径通常是:先思考暴力解法,分析暴力解法的缺点(一般而言暴力解法的缺点是重复计算),然后 结合问题的特点,使用「双指针」技巧对暴力解法进行剪枝。因此,思考算法设计的合理性是更关键的,这一点适用于所有算法问题。

  • 「力扣」第 1004 题:最大连续 1 的个数 III;
  • 「力扣」第 1208 题:尽可能使字符串相等;
  • 「力扣」第 1493 题:删掉一个元素以后全为 1 的最长子数组。
  • 「力扣」第 3 题:无重复字符的最长子串;
  • 「力扣」第 209 题:长度最小的子数组;
  • 「力扣」第 76 题:最小覆盖子串;
  • 「力扣」第 438 题:找到字符串中所有字母异位词;
  • 「力扣」第 567 题:字符串的排列。