📜  从排序数组中删除重复项 - Java (1)

📅  最后修改于: 2023-12-03 15:36:18.254000             🧑  作者: Mango

从排序数组中删除重复项 - Java

在数组中删除重复项是一个经典的算法问题。在这个问题中,我们需要删除数组中的重复项,以便每个元素只出现一次,并返回新数组的长度。

解法

一种简单的解法是使用两个指针。第一个指针用于遍历数组,第二个指针用于记录不重复的元素。如果下一个元素与当前不重复的元素不同,则将它复制到第二个指针指向的位置。最后返回第二个指针的位置。

public int removeDuplicates(int[] nums) {
    if (nums == null || nums.length == 0) {
        return 0;
    }
    int i = 0;
    for (int j = 1; j < nums.length; j++) {
        if (nums[j] != nums[i]) {
            i++;
            nums[i] = nums[j];
        }
    }
    return i + 1;
}
时间复杂度

时间复杂度为 O(n),其中 n 是数组的长度。因为我们只遍历了一次数组,所以解法是线性时间复杂度的。

空间复杂度

空间复杂度为 O(1),因为我们只使用了常量级别的额外空间。

总结

这是一个简单但是有趣的算法问题,考察了算法设计和数组操作的能力。如果我们掌握了指针和数组操作的基本技巧,这个问题不难解决。