2.4 数组
数组是什么
数组是数据结构中的最基本结构,几乎所有的程序设计语言都把数组类型设定为固定的基础变量类型。我们可以把数组理解为一种容器,它可以用来存放若干个相同类型的数据元素。
- 存放的数据是整数型的数组,称作整型数组
- 存放的数据是字符型的数组,则称作字符数组
- 另外还有一类数组比较特殊,它是数组的数组,也可以叫作二维数组
数组在内存中是连续存放的,数组内的数据,可以通过索引值直接取出得到。
例题
给定一个排序数组,你需要在原地删除重复出现的元素,使得每个元素只出现一次,返回移除后的数组和新的长度,你不需要考虑数组中超出新长度后面的元素。要求,空间复杂度为 O(1),即不要使用额外的数组空间。
例如,给定数组 nums = [1,1,2],函数应该返回新的长度 2,并且原数组 nums 的前两个元素被修改为 1, 2。 又如,给定 nums = [0,0,1,1,1,2,2,3,3,4],函数应该返回新的长度 5,并且原数组 nums 的前五个元素被修改为 0, 1, 2, 3, 4。
解:核心思路:1.缓存 当前最大的值、数组的长度 2.遍历数组 将比当前最大值大的数据 添加到相应的位置,同时长度加1
public class ArrayTest {
public static void main(String[] args) {
int nums[] = { 0, 0, 1, 1, 1, 2, 2, 3, 3, 4 };
removeRepeat(nums);
}
/**
* 去除重复的
* @param nums 从小到大的排序数组
*/
private static void removeRepeat(int[] nums) {
int max = nums[0];
int len = 1;
for (int i = 1; i < nums.length; i++) {
if (max < nums[i]) {
max = nums[i];
nums[len] = max;
len++;
}
}
System.out.println("长度:" + len);
for (int i = 0; i < len; i++) {
System.out.print(nums[i]+" ");
}
}
}