先排序后处理数据
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;
}
}
原文:https://www.cnblogs.com/fromneptune/p/13228380.html