数组总结
一、二分查找
- 例题: 二分查找
- 暴力解法时间复杂度:O(n)
- 二分法时间复杂度:O(logn)
二、双指针法
- 例题: 移除元素
- 有序数组的平方
- 合并两个有序数组
- 双指针法(快慢指针法):通过一个快指针和慢指针在一个for循环下完成两个for循环的工作。
- 暴力解法时间复杂度:O(n^2)
- 双指针时间复杂度:O(n)
数组中的元素为什么不能删除: 数组在内存中是连续的地址空间,不能释放单一元素,如果要释放,就是全释放(程序运行结束,回收内存栈空间)。
三、滑动窗口
- 例题:长度最小的子数组
- 暴力解法时间复杂度:O(n^2)
- 滑动窗口时间复杂度:O(n)
四、螺旋数组
- 例题:螺旋矩阵 螺旋矩阵2
- 对于正方形(方阵)的二维数组只需要考虑转多少圈以及最后中间是否剩一个值。如果剩一个一个值需要再转完圈后再单独加中间的值。
- 对于矩阵二维数组变成一维数组的情况,需要在转完圈后单独考虑最内圈剩的一行或者一列