Leetcode刷题-数组双指针&数组滑动窗口

Leetcode刷题 | Datawhale202111
在线书本在 https://algo.itcharge.cn/

  • 双指针

    • 对撞指针:两个指针方向相反。适合解决查找有序数组中满足某些约束条件的一组元素问题、字符串反转问题。
    • 快慢双指针:两个指针方向相同。适合解决数组中的移动、删除元素问题,或者链表中的判断是否有环、长度问题。
    • 分离双指针:两个指针分别属于不同的数组 / 链表。适合解决有序数组合并,求交集、并集问题。
  • 滑动窗口:利用了双指针中的快慢指针技巧,我们可以将滑动窗口看做是快慢指针两个指针中间的区间,也可以可以将滑动窗口看做是快慢指针的一种特殊形式。

  • #0344 反转字符串:双指针,一个从前往后一个从后往前,交换

  • #0015 三数之和:将数组顺序排列,一个从前往后,一个从后往前,一个遍历中间

  • #0080 删除有序数组中的重复项 II:快慢双指针,两者中间加的为重复数字

  • #0283 移动零:快慢双指针,一个处理0一个处理原数字,比之前的快

  • #0075 颜色分类:对撞指针

  • #0088 合并两个有序数组:分离双指针

  • #0674 最长连续递增序列:滑动不定窗口,两边比较

  • #1004 最大连续1的个数 III:滑动不定窗口,右移 right 指针,扩大滑动窗口范围,并统计窗口内 0 元素的个数,直到 0 元素的个数超过 k 时将 left 右移,缩小滑动窗口范围,并减小 0 元素的个数。

  • #0220 存在重复元素 III:有点难,滑动窗口想法没想到,

你可能感兴趣的:(leetcode,算法,职场和发展)