数组是存放在连续内存空间上的相同类型数据的集合
数组的特点:
- 数组的下标都是从0开始的。
- 数组内存空间的地址是连续的。
leetcode 704.二分查找
使用二分法前提:
- 数组为有序数组
- 数组中无重复元素
对于区间的两种定义:
- 左闭右闭[left, right] while(left <= right) if(nums[middle] > target) right = middle-1
- 左闭右开[left, right) while(left < right) if(nums[middle] > target) right = middle
数组为null和数组的长度==0的区别
- int[] arr = new int[0];
- int[] arr1 = null;
两者之间的区别在于
- null 是 数组类型的空引用
- 长度为0 是指一个空数组
所以,数组只要被new出来,他就不等于null,他只是长度为0而已。
leetcode 977.有序数组的平方
使用双指针法。
左右两个指针比较得到较大的平方值,然后放入到新数组中,要从后往前赋值。
比较后,left++或right--。
leetcode 209.长度最小的子数组
使用滑动窗口法。
计算子数组长度时公式为:subLength = right - left + 1; 经常会忘记+1。