跳至主要內容

双指针

Mike大约 2 分钟leetcodetwo pointers

双指针

双指针技术是一种以受控的方式遍历数据集(通常是数组或列表)的技术。它包括两个指针,一个指向数据集的开头,另一个指向数据集的结尾,并根据特定条件将它们相互移动。这种技术通常用于解决涉及在数据集中搜索特定条件或模式的问题,或者需要对数据集中的不同元素进行比较的问题。

双指针技术主要用于解决具有线性时间复杂度的问题,与暴力解法相比,它可以大大提高性能。使用该技术解决的一些常见问题包括:

  • 查找一组数据中的最大/最小值。
  • 计算特定元素的出现次数。
  • 查找没有重复字符的最长子串。
  • 查找大小为k的子数组的最大和。

总的来说,双指针技术是解决特定类型问题的有用方法,这些问题涉及以可控方式迭代数据集,如模式匹配、数据分析和统计。它可以对数据集进行高效、可控的迭代,从而提高性能和结果的准确性。

two pointers
two pointers

习题

移除元素

27: 移除元素
26: 删除有序数组中的重复项
283: 移动零
844: 比较含退格的字符串
977: 有序数组的平方

反转字符串

344: 反转字符串

替换数字

卡码网54: 替换数字

翻转字符串里的单词

151: 翻转字符串里的单词

反转链表

206: 反转链表

删除链表的倒数第N个节点

19: 删除链表的倒数第N个节点

链表相交

160: 链表相交

环形链表

141: 环形链表
142: 环形链表II

三数之和

15: 三数之和
16: 最接近的三数之和

四数之和

18: 四数之和

总结