[LeetCode] #136 只出现一次的数字

给定一个非空整数数组,除了某个元素只出现一次以外,其余每个元素均出现两次。找出那个只出现了一次的元素。

输入: [2,2,1]

输出: 1

排序、遍历

class Solution {
    public int singleNumber(int[] nums) {
        Arrays.sort(nums);
        for(int i = 0;i < nums.length-1;i+=2)
            if(nums[i]!=nums[i+1]) return nums[i];
        return nums[nums.length-1];
    }
}

异或

class Solution {
    public int singleNumber(int[] nums) {
        int single = 0;
        for (int num : nums) {
            single ^= num;
        }
        return single;
    }
}

知识点:

异或是一种基于二进制的位运算,异或运算有以下三个性质。

[LeetCode] #136 只出现一次的数字_LeetCode

 (注意:计算1^2需先转化为二进制01^10,同位相同取0不同取1结果为11,转化为10进制为3,故1^2=3)

 总结: