力扣题解 136th 只出现一次的数字
136th 只出现一次的数字
-
先排序后处理数据
class Solution { public int singleNumber(int[] nums) { Arrays.sort(nums); boolean flag = false; int ans = 0; for(int i = 0; i < nums.length; i++) { if(i+1 == nums.length) { ans = nums[i]; break; } if(nums[i] == nums[i+1]) { i++; continue; } ans = nums[i]; break; } return ans; } }
-
使用异或运算
异或运算有以下三个性质。
-
任何数和 00 做异或运算,结果仍然是原来的数,即 a⊕0=a a⊕0=a。
-
任何数和其自身做异或运算,结果是 00,即 a⊕a=0 a⊕a=0。
-
异或运算满足交换律和结合律,即 a⊕b⊕a=b⊕a⊕a=b⊕(a⊕a)=b⊕0=b
, a⊕b⊕a=b⊕a⊕a=b⊕(a⊕a)=b⊕0=b。
class Solution { public int singleNumber(int[] nums) { int ans = 0; for(int i = 0; i < nums.length; i++) { ans ^= nums[i]; } return ans; } }
-