数组
Date:
数组经典题: 二分查找、双指针、滑动窗口等题目的核心思路
二分查找
$704 二分查找
关键点
从始至终遵循同一个数组边界定义,左闭右开 | 左闭右闭
双指针
$27 移除元素
关键点
对快慢指针的理解: 快指针 – 查找,哨兵 慢指针 – 实际赋值处,操作结果数组
$977 有序数组的平方
关键点
题目的特殊性,升序排列,有负数的话,那平方最大的数字肯定是从两端到中间逼近的。所以可以通过双指针向中间逼近,一步步获取最大值、次大值……
$209 长度最小的子数组 | 滑动窗口
关键点
两重循环的话不用说,外循环起点,内循环终点,遍历所有可能的情况 滑动窗口是关键,题目中,说明了数组中每个元素都是正整数,所以带来了某些隐藏条件,就比如,起点终点之间的元素和总是窗口越宽越大,因为加的都是正整数,所以就可以用滑动窗口的思想
- 移动窗口的右侧(终点指针)
- 如果满足条件,再尝试移动窗口的左侧(起点指针)一直移动找到该终点指针下的最小窗口宽度。
- 重复(1)(2)
$59 螺旋矩阵
关键点
循环不变量:
- 每次都是处理一圈,从外圈一点点到内圈。
- 每一圈都是处理四条边,每条边都是处理0到末尾前一个。
- 利用offset来控制每一圈的偏移量。