Python-数组-复习-面试
数组 学习笔记
一、数组基础
-
定义
数组是存储在连续内存空间上的同类型数据集合,Python 中一般使用列表list模拟数组。 -
核心特性
- 内存地址连续,下标从 0 开始
- 增、删元素时,需要移动后续元素,操作效率偏低
- 随机访问元素速度快
- 学习提醒
数组看似基础,但结合算法场景实现并不简单,一定要多动手手写代码练习。
二、数组五大经典算法题型
1. 二分法
- 适用场景:有序数组查找元素、查找边界
- 核心要点:区间定义保持一致性(循环不变量)
- 区间规范二选一,不可混用:左闭右闭
[left, right]/ 左闭右开[left, right)
2. 双指针法
- 适用场景:原地修改数组、元素筛选、数组反转等
- 经典例题:移除数组指定元素(快慢指针)
- 特点:原地操作,空间复杂度 O(1),执行效率高
3. 滑动窗口
- 本质:双指针的延伸用法
- 适用场景:连续子数组、连续子串类问题
- 原理:用左右指针划定动态窗口,不断移动/收缩窗口求解
4. 模拟行为(循环模拟)
- 核心思路:按照题目规则,用循环模拟实际操作
- 重点要求:严格遵守循环不变量,处理好下标与边界,防止出错
- 常见题型:矩阵遍历、元素移位、螺旋数组等
5. 前缀和
- 适用场景:区间和、区间差值相关问题,优先使用该思路
- 核心思想:提前预处理前缀和数组,将区间求和转为两数相减
- 优势:预处理完成后,单次查询区间和时间复杂度 O(1)
三、题型速记表格
| 算法思路 | 核心用途 | 关键注意点 |
|---|---|---|
| 二分法 | 有序数组查找、找边界 | 区间规则统一,遵守循环不变量 |
| 双指针 | 原地移除元素、数组重构 | 快慢/左右指针分工清晰 |
| 滑动窗口 | 连续子数组/子串问题 | 动态维护窗口左右边界 |
| 模拟行为 | 数组/矩阵按规则遍历操作 | 把控下标、边界与循环不变量 |
| 前缀和 | 多次查询区间和、区间差 | 先预处理前缀和数组,再做减法运算 |

浙公网安备 33010602011771号