Leetcode原题
思路
这里的方法有很多,有暴力遍历查找的、使用hashmap存储查找的。这里利用异或的规律使用一下巧妙一点的方法。
异或的3个定律
- 交换律:a ^ b ^ c <=> a ^ c ^ b
- 任何数于0异或为任何数 0 ^ n => n
- 相同的数异或为0: n ^ n => 0
方法 一 异或
/** * 思路: 利用异或 * @param nums * @return */ public int singleNumber(int[] nums) { int result = 0; for (int i = 0; i < nums.length; i++) { result = result ^ nums[i]; } return result; }
上面代码实现就是利用了异或的定律。如
var a = [2,3,2,4,4] 2 ^ 3 ^ 2 ^ 4 ^ 4等价于 2 ^ 2 ^ 4 ^ 4 ^ 3 => 0 ^ 0 ^3 => 3
有兴趣的老爷,还可以关注我的公众号【一起收破烂】,回复【006】获取 最新java面试资料以及简历模型120套哦~