一、什么是数组
如果用数学的方式来看,我们可以把普通的数组看成是一个向量,那么二维数组就是一个矩阵。不过,二维数组对数据的处理方式并没有太多特别之处。
二、练习题
给定一个排序数组,你需要在原地删除重复出现的元素,使得每个元素只出现一次,返回移除后的数组和新的长度,你不需要考虑数组中超出新长度后面的元素。要求,空间复杂度为 O(1),即不要使用额外的数组空间。
/**
* 给定一个排序数组,你需要在原地删除重复出现的元素,使得每个元素只出现一次,
* 返回移除后的数组和新的长度,你不需要考虑数组中超出新长度后面的元素。
* 要求,空间复杂度为 O(1),即不要使用额外的数组空间。
*/
static void removeSamelementE() {
int nums[] = {1, 3, 22, 4, 4, 5};
Set<Integer> set = new HashSet<>();
for (int i = 0; i < nums.length; i++) {
if (set.contains(nums[i])) {
// 把最后一个元素替代指定的元素
nums[i] = nums[nums.length - 1];
// 数组缩容
nums = Arrays.copyOf(nums, nums.length - 1);
} else {
System.out.println(nums[i]);
set.add(nums[i]);
}
}
System.out.println(Arrays.toString(nums));
}