数组定义
数组是存放在连续内存空间上的相同类型数据的集合
举一个字符数组的例子,如图所示:
需要注意的两点是:
- 数组下标都是从0开始的
- 数组内存空间的地址是连续的
正是因为数组的在内存空间的地址是连续的,所以我们在删除或者增添元素的时候,就难免要移动其他元素的地址。
数组的经典题目
二分法
leetcode704-二分查找
时间复杂度: O(N)
双指针法
leetcode27-移除元素
双指针法(快慢指针法):通过一个快指针和慢指针在一个for循环下完成两个for循环的工作。
时间复杂度: O(N)
滑动窗口
leetcode209-长度最小的子数组
时间复杂度: O(n)
滑动窗口的精妙之处在于根据当前子序列和大小的情况,不断调节子序列的起始位置。从而将O(n^2)的暴力解法降为O(n)。