力扣刷题——136. 只出现一次的数字
136. 只出现一次的数字
位运算
这题让我想起做过的另一道题https://www.luogu.com.cn/problem/solution/P1161
利用性质:
一个数与0异或得到还是这个数它本身,且一个数与某个数异或两次或偶数次得到仍是它本身。进一步可以知道0与任何数异或奇数次时得到该数,异或偶数次时仍为0;
而且经过验证还有如下性质
比如有a, x, y, z. a=0; x, y, z != 0.
a与x, y, z中任意两个数异或偶数次,剩下一个数异或奇数次,则最后a等于剩下那个数,且异或顺序不一定,比如a^x, a^y, a^ x, a^y, a ^ z. 此时a=z。
class Solution {
public int singleNumber(int[] nums) {
int ans = 0;
for (int i = 0; i < nums.length; ++i) {
ans ^= nums[i];
}
return ans;
}
}
posted on 2023-02-23 15:42 pumpkinsBig 阅读(15) 评论(0) 收藏 举报
浙公网安备 33010602011771号