数组篇
数组是可以在内存中连续存储多个元素的结构,在内存中的分配也是连续的,数组中的元素通过数组下标进行访问,数组下标从0开始。例如下面这段代码就是将数组的第一个元素赋值为 1。
int[] data = new int[100];data[0] = 1;
new开辟的空间在堆上,而一般声明的变量存放在栈上。
通常,在局部函数中new出一段新的空间,该段空间在局部函数调用结束后仍然能够使用,可以用来向主函数传递参数。
另外需注意new的使用格式,new出来的是一段空间的首地址。所以一般需要用指针来存放这段地址。
数组特点:
- 数组下标都是从0开始的。
- 数组内存空间的地址是连续的
二分法的写法
有两种写法,要注意边界条件,
- 左闭右闭-1
- 左闭右开不变
滑动窗口
滑动窗口的精妙之处在于根据当前子序列和大小的情况,不断调节子序列的起始位置。从而将O(n^2)暴力解法降为O(n)
如力扣904.水果成篮题目,可以用滑动窗口
数组篇思维导图借鉴如下