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

ut6juiuv  于 2021-07-06  发布在  Java
关注(0)|答案(2)|浏览(331)

问题:给定一个排序数组nums,在适当的位置删除重复项,使每个元素只出现一次并返回新的长度。
不要为另一个数组分配额外的空间,必须通过使用o(1)个额外内存修改输入数组来实现。

public int removeDuplicates(int[] nums) {
if (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;

}
return语句在这里到底做什么。是什么 return i + 1 你是说这里?

fcg9iug3

fcg9iug31#

你的问题已经在这里得到了回答;除此之外,我们还可以从零开始,去掉第一个 if 声明:

使用b.java文件进行测试:

import java.util.*;

class Solution {
    public static final int removeDuplicates(
        final int[] nums
    ) {

        int i = 0;

        for (int num : nums)
            if (i == 0 || num > nums[i - 1]) {
                nums[i++] = num;
            }

        return i;
    }
}

class b {
    public static void main(String[] args) {
        System.out.println(new Solution().removeDuplicates(new int[] { 1, 1, 2}));
        System.out.println(new Solution().removeDuplicates(new int[] { 0, 0, 1, 1, 1, 2, 2, 3, 3, 4}));
    }
}

印刷品

2
5
ekqde3dh

ekqde3dh2#

这个 return i + 1 返回有多少个唯一整数。我认为这是一个leetcode问题,既然它已经存在,那么 int[] 是通过引用传入的,leetcode想知道要检查多少个数字(您应该将唯一的数字放在第一个数字中) i + 1 斑点)。
如果你看这个问题,它会说:

这意味着返回数组的长度。
如果你有数组 [1,1,2,3,4,4] ,你会把它变成 [1,2,3,4,...] ,其中 ... 是数组的其余部分。但是,你回来了 4 因为新数组的长度应该是 4 .
希望这能帮你把事情弄清楚!

相关问题