数组是一种基础数据结构,可以用来处理常见的排序和二分搜索问题,典型的处理技巧包括对撞指针、滑动窗口等。 面试中的算法问题,有很多并不需要复杂的数据结构支撑,就是用数组,就能考察出很多东西。
题型1:原地算法
在不引入额外空间的情况下,修改数组
283. 移动零 - 力扣(LeetCode)
27. 移除元素 - 力扣(LeetCode)
26. 删除有序数组中的重复项 - 力扣(LeetCode)
80. 删除有序数组中的重复项 II - 力扣(LeetCode)
75. 颜色分类 - 力扣(LeetCode)
31. 下一个排列 - 力扣(LeetCode)
题型2:双指针——对撞指针
167. 两数之和 II - 输入有序数组 - 力扣(LeetCode)
15. 三数之和 - 力扣(LeetCode)
18. 四数之和 - 力扣(LeetCode)
125. 验证回文串 - 力扣(LeetCode)
11. 盛最多水的容器 - 力扣(LeetCode)
题型3:双指针——快慢指针
209. 长度最小的子数组 - 力扣(LeetCode)
LCR 119. 最长连续序列 - 力扣(LeetCode)
88. 合并两个有序数组 - 力扣(LeetCode)
题型4:排序
912. 排序数组 - 力扣(LeetCode)
排序中地快速排序,归并排序,堆排序需要重点掌握。
215. 数组中的第K个最大元素 - 力扣(LeetCode)
347. 前 K 个高频元素 - 力扣(LeetCode)
题型5:二分查找
35. 搜索插入位置 - 力扣(LeetCode)
33. 搜索旋转排序数组 - 力扣(LeetCode)
34. 在排序数组中查找元素的第一个和最后一个位置 - 力扣(LeetCode)
153. 寻找旋转排序数组中的最小值 - 力扣(LeetCode)
字符串篇
题型1:字符串反转类:
344. 反转字符串 - 力扣(LeetCode)
541. 反转字符串 II - 力扣(LeetCode)
557. 反转字符串中的单词 III - 力扣(LeetCode)
7. 整数反转 - 力扣(LeetCode)
151. 反转字符串中的单词 - 力扣(LeetCode)
题型2:回文串类:
125. 验证回文串 - 力扣(LeetCode)
647. 回文子串 - 力扣(LeetCode)
5. 最长回文子串 - 力扣(LeetCode)
516. 最长回文子序列 - 力扣(LeetCode)
题型3:字符操作类:
415. 字符串相加 - 力扣(LeetCode)
43. 字符串相乘 - 力扣(LeetCode)
387. 字符串中的第一个唯一字符 - 力扣(LeetCode)
242. 有效的字母异位词 - 力扣(LeetCode)
434. 字符串中的单词数 - 力扣(LeetCode)
6. Z 字形变换 - 力扣(LeetCode)
题型4:子串匹配类:
28. 找出字符串中第一个匹配项的下标 - 力扣(LeetCode)
14. 最长公共前缀 - 力扣(LeetCode)
459. 重复的子字符串 - 力扣(LeetCode)
题型5:括号匹配类:
20. 有效的括号 - 力扣(LeetCode)
1021. 删除最外层的括号 - 力扣(LeetCode)
32. 最长有效括号 - 力扣(LeetCode)