136. Single Number

题目:Given an array of integers, every element appears twice except for one. Find that single one.
一开始没有考虑空间,直接用hashMap,也AC了

public class Solution {
    public int singleNumber(int[] nums) {
        HashMap<Integer,Integer> map = new HashMap<>();
        for(int i : nums)
        {
            if(map.containsKey(i))
            {
                map.put(i,map.get(i)+1);
            }else
                map.put(i,1);
        }
        for(int i: nums)
        {
            if(map.get(i) == 1){return i;}
        }
        return 0;
    }
}
``


public class Solution {
    public int singleNumber(int[] nums) {
        if(nums.length == 0){return 0;}
        int result = nums[0];
        for(int i=1;i<nums.length;i++)
        {
            result ^= nums[i];

        }
        return result;
    }
}

考虑空间复杂度为常数后。该题可以利用位运算解决。
对应k=2时,每个操作数进行异或^,相同为0,不同为1

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值