| 标题 | 思路 |
|---|---|
| 1. 两数之和 | 哈希表 |
| 49. 字母异位词分组 | 字符串哈希 |
| 128. 最长连续序列 | 哈希,key表示左右端点,value表示区间长度 |
| 283. 移动零 | 利用指针赋值不为0的数 |
| 27. 移除元素 | 利用指针赋值不为val的数 |
| 11. 盛最多水的容器 | 长板向内移动一定变小,短板向内移动可能增大可能变小 |
| 15. 三数之和 | 注意避免重复 |
| 16. 最接近的三数之和 | 简单版三数之和 |
| 560. 和为 K 的子数组 | 前缀和+dic |
| 238. 除自身以外数组的乘积 | 模拟左连乘和右连乘 |
| 189. 轮转数组 | 注意 mod 数组长度 |
| 56. 合并区间 | 区间左右端口的取值 |
| 73. 矩阵置零 | 用两个set存储需要置为0的行、列 |
| 54. 螺旋矩阵 | 模拟,边界判断 |
| 59. 螺旋矩阵 II | 模拟,边界判断 |
| 48. 旋转图像 | 对角4个数循环交换 |
| 724. 寻找数组的中心下标 | 左、右和 |
| 14. 最长公共前缀 | 字符串 |
| 912. 排序数组 | 手撕快速排序 / 手撕堆排序 |
| 螺栓螺母配对 | 基于快速排序思想 |
| 179. 最大数 | 自定义快排 |
| 8. 字符串转换整数 (atoi) | 模拟,但是要考虑特殊情况 |
| 151. 反转字符串中的单词 | 用库方法 / 模拟 |
| 2248. 多个数组求交集 | 使用set |
| 415. 字符串相加 | 从后往前相加,注意补零 |
| 43. 字符串相乘 | 竖式相乘 + 字符串相加 |
| 1556. 千位分隔数 | 模拟 |
| 165. 比较版本号 | 字符串模拟 |
| 470. 用 Rand7() 实现 Rand10() | 1. (rand_X() - 1) * Y + rand_Y() 等概率生成[1, X * Y]范围的随机数,即实现了 rand_XY() 2. 要实现randY(),就需要先实现rand_N(),并且保证N大于Y且是Y的倍数。这样再通过rand_N() % Y + 1 就可以得到[1,Y]范围的随机数了 3. 同时需要拒绝采样 |
| 169. 多数元素 | 哈希表 / 利用基准值和计数器 |
| 136. 只出现一次的数字 | 异或性质 |
| 41. 缺失的第一个正数 | 数组哈希(注意交换赋值的问题) |
| 442. 数组中重复的数据 | 和41一样 |
| 整数与IP地址间的转换 | 模拟 |
| 31. 下一个排列 | 举例然后找到规律 |
| 多个有序数组求第K小 | 使用位置数组来辅助 |
| 581. 最短无序连续子数组 | 从左到右,从右到左 |
| 小于n的最大数 | 模拟,用到了回溯的思想/回溯 |
| 88. 合并两个有序数组 | 逆向双指针 |
| 面试题 16.06. 最小差 | 排序 + 双指针 |
| 172. 阶乘后的零 | 数学推导 |
| 440. 字典序的第K小数字 | 前缀判断 |
| 390. 消除游戏 | 模拟删除 |
| 680. 验证回文串 II | 模拟 |
| 849. 到最近的人的最大距离 | 双指针 |
| 1574. 删除最短的子数组使剩余数组有序 | 双指针 |
| 215. 数组中的第K个最大元素 | 先划分三个数组,然后分治 |