【发布时间】:2018-12-06 19:52:01
【问题描述】:
问题是这样的:
给定一个非空整数数组,每个元素都出现两次,除了一个。找到那个。
输入:[4,1,2,1,2]
输出:4
我的代码是:
public static int singleNumber(int[] nums) {
int answer = 0;
for (int i =0; i<nums.length-1; i++) {
for(int j = i+1; j<nums.length; j++) {
if(nums[i] != nums[j]) {
answer = nums[i]; //this should be where I am wrong.
}
}
}
return answer;
}
我知道输出是 4,然后现在它会变成 1。 我试图弄清楚如何在找到后不更改找到的值。
【问题讨论】:
-
我会使用 HashBag(或使用 Map 实现这样的包),然后返回计数为 1 的所有对象的集合。
-
输入数字有限制吗? (例如:它们在 1-10 等之间)
-
我还没有学过哈希......所以这就是我现在正在做的事情。并且输入数字没有限制(抱歉之前没有具体说明)
-
这是算法问题还是实现问题?
标签: java arrays loops for-loop unique