只出现一次的数字
思路
根据异或的性质:0^n=n和n^n=0以及异或满足交换律和结合律可知,一个数组中偶数个相同数字异或的结果为0,奇数个相同数字异或的结果为该数字,所以要找出现奇数次的数字,只需求一下整个数组异或的结果即可
代码
class Solution {
public int singleNumber(int[] nums) {
int result=0;
for(int i=0;i<nums.length;i++){
result^=nums[i];
}
return result;
}
}
复杂度
时间复杂度:O(n)
本题算法核心
异或的性质:
1.0^n=n
2.n^n=0
3.交换律:a^b=b^a
4.结合律:(a^b)^c=a^(b^c)
b^a^b=a^(b^b)=a^0=a
标签:交换律,数字,--,复杂度,int,异或,结合律,LeetCode From: https://blog.csdn.net/m0_73694177/article/details/144160956