一维数组的使用
- 数组的声明和初始化
int[] arr = new int[10]
String[] arr1 = new String[]{"Tom","Jerry"}
- 调用数组的指定元素:使用角标、索引、index
index从0开始
- 数组的属性:length,表示数组的长度
- 数组的遍历
- 数组元素的默认初始化值
- 一维数组的内存解析
前提,再main()中声明变量,int[] arr = new int[]{1,2,3};
虚拟机栈:main()作为一个栈帧,压入空间中。在main()栈帧中,存储着arr变量。arr记录着数组实体的首地址值。
堆:数组实体存储在堆空间中
二维数组的使用
二维数组:一维数组的元素,又是一个唯一数组构成了二维数组。
- 数组的声明和初始化
- 调用数组的指定元素:使用角标、索引、index
- 数组的属性:length,表示数组的长度
- 数组的遍历
- 数组元素的默认初始化值
- 二维数组的内存解析
数组的常用算法
- 数值型数组的特征值计算:最大值、最小值、总和、平均值等
- 数组元素的赋值。比如:杨辉三角,彩票随机生成数(6位;1-30;不能重复);回型数
- 数组的复制、赋值
- 数组的反转
- 数组的扩容、缩容
- 数组的查找
线性查找
二分法查找(前提:数组有序) - 数组的排序
冒泡排序:最简单
快速排序:最常用
Arrays工具类的使用
常用的内部方法
toString()/ sort()/ binarySearch()
数组中的常见异常
ArrayindexOutOfBoundsException
NullPointerException
补充:
- 数组没有length()方法,String有length()方法
- 数组的索引,表示数组元素距离首地址的偏移量。因为第一个元素的地址与首地址相同,所以偏移量是0,所以从0开始。
- 快排时间复杂度O(nlogn)
- 最大子序列和,要求时间复杂度O(n)
class MaximumSubarrayDP {
public int maxSubArray(int[] nums) {
int currMaxSum = nums[0];
int maxSum = nums[0];
for (int i = 1; i < nums.length; i++) {
currMaxSum = Math.max(currMaxSum + nums[i], nums[i]);
maxSum = Math.max(maxSum, currMaxSum);
}
return maxSum;
}
}
作者:Trusting Antonelliyjp
链接:https://leetcode.cn/circle/article/jV9WBW/
来源:力扣(LeetCode)