Appearance
数组
数组
数组是绝大部分编程语言都内置的数据结构,用来存放一堆相同的元素,可以通过索引值访问数组中的元素。
遍历数组很简单,借助一个自增的索引值
js
for(let i = 0; i < arr.length;++i) {
// arr[i]
}
遍历数组是非常常用的功能,以至于某些语言可能还提供了其他快捷遍历数组的方法
js
for(const idx in arr){
//
}
for(const num of arr){
//
}
数组的很多题目都需要通过遍历
常见的数组题目包括
- 数组的改变、移动
- 数组的旋转
- 统计数组中的元素
- 数组的遍历
- 二维数组及滚动数组
- 特定顺序遍历二维数组
- 二维数组变换
- 前缀和数组
调整数组顺序使奇数位于偶数前面
使用前后两个指针,前后同时遍历,头指针遇见偶数、尾指针遇见奇数时交换位置
从增序数组中找到和为S的两个数
- 设定一个小索引left,从0开始,设定一个大索引right,从array.length开始
- 判断array[left] + array[right]的值s是否符合条件
- 符合条件 - 返回
- 大于sum,right向左移动;小于sum,left向右移动
- 若left=right,没有符合条件的结果
连续子数组的最大和
- 记录一个当前连续子数组最大值 max 默认值为数组第一项
- 记录一个当前连续子数组累加值 sum 默认值为数组第一项
- 从数组第二个数开始,若 sum<0 则当前的sum不再对后面的累加有贡献,sum = 当前数
- 若 sum>0 则sum = sum + 当前数
- 比较 sum 和 max ,max = 两者最大值