📊 普通数组
数组基础操作与区间处理,涵盖前缀积、区间合并、原地修改等常见技巧。
5 题 · 中等 ×4 困难 ×1
| # | 题目 | 难度 |
|---|---|---|
| 53 | 最大子数组和 | 中等 |
| 56 | 合并区间 | 中等 |
| 189 | 轮转数组 | 中等 |
| 238 | 除自身以外数组的乘积 | 中等 |
| 41 | 缺失的第一个正数 | 困难 |
核心思路
- 最大子数组和:Kadane
算法,
dp[i] = max(nums[i], dp[i-1] + nums[i]),维护当前最大值。 - 合并区间:按区间起点排序后线性扫描,当前区间与上一个区间有重叠则合并(取右端点较大值)。
- 轮转数组:三次翻转法:整体翻转 → 前 k 个翻转 → 后 n-k 个翻转,O(1) 空间。
- 除自身以外数组的乘积:先从左到右计算前缀积,再从右到左累乘后缀积,不使用除法,O(1) 空间。
- 缺失的第一个正数:利用数组本身作哈希表,将每个正整数
x(1≤x≤n)放到
nums[x-1]位置,再扫描找第一个不在位的下标。