问题:给定一个排序数组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
你是说这里?
2条答案
按热度按时间fcg9iug31#
你的问题已经在这里得到了回答;除此之外,我们还可以从零开始,去掉第一个
if
声明:使用b.java文件进行测试:
印刷品
ekqde3dh2#
这个
return i + 1
返回有多少个唯一整数。我认为这是一个leetcode问题,既然它已经存在,那么int[]
是通过引用传入的,leetcode想知道要检查多少个数字(您应该将唯一的数字放在第一个数字中)i + 1
斑点)。如果你看这个问题,它会说:
这意味着返回数组的长度。
如果你有数组
[1,1,2,3,4,4]
,你会把它变成[1,2,3,4,...]
,其中...
是数组的其余部分。但是,你回来了4
因为新数组的长度应该是4
.希望这能帮你把事情弄清楚!