删除已排序数组中的重复项,尝试理解

时间:2017-11-05 05:32:56

标签: java arrays

我正在尝试从已排序的数组中删除重复值。 这是我的代码。

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?

由于

1 个答案:

答案 0 :(得分:2)

因为数组在Java(以及许多其他语言)中基于零。大小为 n 的数组的索引为{ 0, 1, 2, ..., n-1 },因此,从数组的第一个元素开始将是array[0]

但是你当然不想这样做,因为你要检查每个元素前面的元素。如果i在您的循环中的0处开始,您将获得例外。