您的位置:首页 > 其它

leetcode_middle_7_260. Single Number III

2017-02-01 10:12 411 查看
题意:
一个数列,有且仅有两个数字出现1次,其它都出现2次,找出出现1次的数。

分析:

我们要判断一个数字只出现了一次,就是要发现它曾经出现过。由于数值的不限制,就不能利用角标。

所以我们必要的考虑一个额外的空间,一个数组,我们遍历给定的数组,将数字放入额外数组,只要额外数组中出现过,就将它删除(因为就可以排除它了,以后就不用参与查找了)。,如果没出现过,就放入。由于我们是要找出现一次的数字,考虑采用数据结构set

public class Solution {
public int[] singleNumber(int[] nums) {
int[] arr = new int[2];

HashSet<Integer> hs = new HashSet<Integer>();
for(int i = 0; i<nums.length; i++){
if(hs.contains(nums[i])){
hs.remove(nums[i]);
}
else{
hs.add(nums[i]);
}
}
Iterator<Integer> iterator = hs.iterator();
arr[0] = iterator.next();
arr[1] = iterator.next();
return arr;
}
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  leetcode