leetcode_middle_7_260. Single Number III

题意:

一个数列,有且仅有两个数字出现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;
    }
}


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值