我正在尝试从已排序的数组中删除重复值。 这是我的代码。
public static int remove (int[] nums, int n) {
int count = 0;
for(int i = 1; i < n; i++){
//tried to print out here
if(nums[i] == nums[i-1]) count++;
else nums[i-count] = nums[i];
}
return n-count;
}
我的数组是{1, 2, 2, 3, 4, 4, 4, 5, 5}
。
我试图打印出变量的值,这样我就能理解它是如何工作的。在第一次循环迭代中,在IF条件if i = 1
之前,为什么numb[i]
的值已经是2?
由于
答案 0 :(得分:2)
因为数组在Java(以及许多其他语言)中基于零。大小为 n 的数组的索引为{ 0, 1, 2, ..., n-1 }
,因此,从数组的第一个元素开始将是array[0]
。
但是你当然不想这样做,因为你要检查每个元素前面的元素。如果i
在您的循环中的0
处开始,您将获得例外。