【发布时间】:2018-05-14 15:44:38
【问题描述】:
我对此有疑问:
对象显示给定一个排序数组,删除重复的地方,使每个元素只出现一次并返回新的长度。 不要为另一个数组分配额外的空间,您必须使用常量内存来执行此操作。例如, 给定输入数组 nums = [1,1,2], 您的函数应返回长度 = 2,nums 的前两个元素分别为 1 和 2。在新长度之外留下什么并不重要。
我使用 HashSet 来做这个问题,但结果总是显示 [1,1]。我不知道谁能帮我知道问题出在哪里?
我的代码:
class Solution {
public int removeDuplicates(int[] nums) {
if (nums.length == 0) return 0;
Set<Integer> numset = new HashSet<>();
for(int i:nums){
numset.add(i);
}
return numset.size();
}
}
您的意见 [1,1,2] 您的答案 [1,1] 预期答案 [1,2]
【问题讨论】:
-
你没有做到到位。从任务描述和方法签名中,我假设检查类似于“获取
nums的第一个元素并将它们与预期结果进行比较”。 -
Do not allocate extra space for another array。你的算法不是in place。您正在分配new HashSet<>();更多内存。 -
再次阅读描述:"[...] nums 的前两个元素分别为 1 和 2。" - 提示:您没有修改
nums在任何地方,前两个元素如何变成“1”和“2”?