leetcode 136 只出现一次的数字

原题点这里

统计只出现一次的数字

这个很容易想到用 map或set做。

public int singleNumber(int[] nums) {
        int n = nums.length;
        HashSet<Integer> record = new HashSet<>();
        for(int i=0;i<n;i++){
            if(record.contains(nums[i])){
                record.remove(nums[i]);
            }else{
                record.add(nums[i]);
            }
        }
        for(Integer ans : record){
            return ans;
        }
        return 0;
    }
View Code

我们知道,任何数 异或 0 = 它本身

任何数 异或 它本身 =0

利用这个性质,可以利用位运算优雅的解题。

int n = nums.length;
        int ans = 0;
        for(int i=0;i<n;i++) {
            ans^=nums[i];
        }
        return ans;
View Code

 

posted @ 2020-05-14 10:33  超级学渣渣  阅读(144)  评论(0编辑  收藏  举报