Skip to content

数组

数组

数组是绝大部分编程语言都内置的数据结构,用来存放一堆相同的元素,可以通过索引值访问数组中的元素。

遍历数组很简单,借助一个自增的索引值

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,没有符合条件的结果

连续子数组的最大和

letcode传送门

  • 记录一个当前连续子数组最大值 max 默认值为数组第一项
  • 记录一个当前连续子数组累加值 sum 默认值为数组第一项
  • 从数组第二个数开始,若 sum<0 则当前的sum不再对后面的累加有贡献,sum = 当前数
  • 若 sum>0 则sum = sum + 当前数
  • 比较 sum 和 max ,max = 两者最大值