异或运算
Posted faded828x
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了异或运算相关的知识,希望对你有一定的参考价值。
异或运算基础 LeetCode268
异或运算规则:0^0=0; 0^1=1; 1^0=1; 1^1=0。同值取零,异值取一。
性质:1,交换律:a^b=b^a; 2,结合律:(a^b)^c=a^(b^c); 3, a^a=0, a^0=a; 4, a^b^b=a;
Swap两数:a=a^b; b=a^b; a=a^b.
给定一个包含 0, 1, 2, ..., n 中 n 个数的序列,找出 0 .. n 中没有出现在序列中的那个数。
示例 1:
输入: [3,0,1]
输出: 2
示例 2:
输入: [9,6,4,2,3,5,7,0,1]
输出: 8
在此只考虑异或运算的方法。
/*
nums下标为0~n-1,nums值为0~n(missing),除missing和n外的数都出现了两次,用n与前2n个数取异或运算,得到的值即为missing。
*/
class Solution { public int missingNumber(int[] nums) { int missing = nums.length; for (int i = 0; i < nums.length; i++) { missing ^= i ^ nums[i]; } return missing; } }
以上是关于异或运算的主要内容,如果未能解决你的问题,请参考以下文章