Leetcode数组相关
题目列表
easy:
题目 | 难度 |
---|---|
1. 两数之和 | 简单 |
26. 删除有序数组中的重复项 | 简单 |
27. 移除元素 | 简单 |
35. 搜索插入位置 | 简单 |
88. 合并两个有序数组 | 简单 |
118. 杨辉三角 | 简单 |
119. 杨辉三角 II | 简单 |
167. 两数之和 II - 输入有序数组 | 简单 |
169. 多数元素 | 简单 |
217. 存在重复元素 | 简单 |
219. 存在重复元素 II | 简单 |
228. 汇总区间 | 简单 |
268. 丢失的数字 | 简单 |
278. 第一个错误的版本 | 简单 |
283. 移动零 | 简单 |
303. 区域和检索 - 数组不可变 | 简单 |
349. 两个数组的交集 | 简单 |
350. 两个数组的交集 II | 简单 |
414. 第三大的数 | 简单 |
448. 找到所有数组中消失的数字 | 简单 |
453. 最小操作次数使数组元素相等 | 简单 |
455. 分发饼干 | 简单 |
463. 岛屿的周长 | 简单 |
495. 提莫攻击 | 简单 |
medium:
技巧与分析
若是单纯对数组的线性操作,利用List
或者Map
等数据结构和它们的各种方法,能够实现空间换时间(1,217,219,349)
但是题目往往没有那么简单,对于数组中各个元素的对比,移动,交换能操作,一般都会用到双指针,有时候会将数组先排序后再利用双指针。
双指针在数组中的应用非常普遍,比如
- 对比或交换数组元素的位置(26,27,88,283,453,495)
- 缩小范围,直至确定位置(167)
有些问题可以直接用排序或者是二分查找解决,属于是简单题中的简单题了(35,169,268,278)
重点思想:
228. 汇总区间中的双指针技巧有效的避免的复杂的边界讨论,设置i
,然后用low=i
,high=i-1
来设置,这种思想在495. 提莫攻击中再一次被应用,在寻找一个区间时,尤其好用
303. 区域和检索 - 数组不可变中的确定数组中任意两个元素的差值,所涉及的前缀和思想,可以说是非常巧妙
350. 两个数组的交集 II中的记录数字出现次数,和字符串出现次数可以说是一模一样了
448. 找到所有数组中消失的数字中的思想,非常重要,可以说是空间换时间的典范,直接用本身的数组就可以起到记录信息的作用
463. 岛屿的周长中是第一次遍历矩阵的问题,注意单向遍历,注意不要增加多的空间