数组

Date:

数组经典题: 二分查找、双指针、滑动窗口等题目的核心思路


二分查找

$704 二分查找

关键点

从始至终遵循同一个数组边界定义,左闭右开 | 左闭右闭

双指针

$27 移除元素

关键点

快慢指针的理解: 快指针 – 查找,哨兵 慢指针 – 实际赋值处,操作结果数组

$977 有序数组的平方

关键点

题目的特殊性,升序排列,有负数的话,那平方最大的数字肯定是从两端到中间逼近的。所以可以通过双指针向中间逼近,一步步获取最大值、次大值……

$209 长度最小的子数组 | 滑动窗口

关键点

两重循环的话不用说,外循环起点,内循环终点,遍历所有可能的情况 滑动窗口是关键,题目中,说明了数组中每个元素都是正整数,所以带来了某些隐藏条件,就比如,起点终点之间的元素和总是窗口越宽越大,因为加的都是正整数,所以就可以用滑动窗口的思想

  1. 移动窗口的右侧(终点指针)
  2. 如果满足条件,再尝试移动窗口的左侧(起点指针)一直移动找到该终点指针下的最小窗口宽度。
  3. 重复(1)(2)

$59 螺旋矩阵

关键点

循环不变量:

  1. 每次都是处理一圈,从外圈一点点到内圈。
  2. 每一圈都是处理四条边,每条边都是处理0到末尾前一个。
  3. 利用offset来控制每一圈的偏移量。