美文网首页
异或运算&位运算

异或运算&位运算

作者: 锦绣拾年 | 来源:发表于2020-04-28 23:00 被阅读0次

【想转Java刷算法题 不知道合不合适= = 也可以先不转 先看书】
任何数和 0 做异或运算,结果仍然是原来的数,即 a ⊕ 0=a⊕0=a。
任何数和其自身做异或运算,结果是 0,即 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。

作者:LeetCode-Solution
链接:https://leetcode-cn.com/problems/single-number/solution/zhi-chu-xian-yi-ci-de-shu-zi-by-leetcode-solution/
来源:力扣(LeetCode)
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。

相同的还有LC136

LeetCode刷题 木有写出来,涉及异或 Mark学习

一个整型数组 nums 里除两个数字之外,其他数字都出现了两次。请写程序找出这两个只出现一次的数字。要求时间复杂度是O(n),空间复杂度是O(1)。

 

示例 1:

输入:nums = [4,1,4,6]
输出:[1,6] 或 [6,1]
示例 2:

输入:nums = [1,2,10,4,1,4,3,3]
输出:[2,10] 或 [10,2]
 

限制:

2 <= nums <= 10000

来源:力扣(LeetCode)
链接:https://leetcode-cn.com/problems/shu-zu-zhong-shu-zi-chu-xian-de-ci-shu-lcof
著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。

class Solution {
public:
    vector<int> singleNumbers(vector<int>& nums) {
        //遍历一遍就能找到
        int a=0;
        
        vector<int> res;
       for(int i=0;i<nums.size();i++){
           a^=nums[i];
       }//异或结果一定是b异或c,两个数
        int b=0;
        int c=0;
        //涉及到分组,如何分
        int x=1;
        while((x&a)==0){//两个位数相同,&按位与,必须用&
//两个不同的数,必然有不同的一位,那么这一位为1。找到不同的一位
            x<<=1;
        }
        //找到两个位不同的
        
            
        for(int i=0;i<nums.size();i++){
            if(x&nums[i]){//这里也要按位与 不同的那一位为1的,分为一组
                b^=nums[i];
            }else{//不同那一位为0的,分为一组
                c^=nums[i];
            }

                
        }
            res.push_back(b);
            res.push_back(c);
        return res;
    }
};

相关文章

  • 3、小众运算符の大课堂(一)

    较为简单の位运算符: & 位与运算| 位或运算^ 位异或运算~ 位取反运算 举例: 要做位运算,首先要把数据转...

  • 异或运算&位运算

    【想转Java刷算法题 不知道合不合适= = 也可以先不转 先看书】任何数和 0 做异或运算,结果仍然是原来的数,...

  • 嵌入式C语言的位运算

    想必大家都了解&&(且运算符),||(或运算符),在C语言的位运算中 ,位或运算|,位与运算&,异或^,取反~。等...

  • 笔记

    Java中常用的计算方法 Java异或运算总结 异或运算的性质: 异或运算是基于二进制的位运算,采用符号XO...

  • 7.4-位运算符

    ~ 位反& 位与运算| 位或运算^ 位异运算 即1 0或0 1为true,0 0或1 1为flase>> ...

  • 用了这个运算符,算法的时间复杂度竟然降了一个数量级

    其实这个运算符很容易被人忽略,他就是C语言中的位异或运算符^位运算符家族中,最常用的,莫过于异或运算符。我们先看异...

  • 不使用第三方变量交换两个参数的值

    (1)算术运算 a = a + b;b = a - b;a = a - b; 位运算(异或) a = a ^ b;...

  • 2018-06-11c语言位运算

    位运算 Ps:位运算符是指进行二进制的运算。C语言中提供的位运算包括,与(&)、或(|)、异或(^)、取反(~)、...

  • 2018-06-06位运算

    位运算 Ps:位运算符是指进行二进制的运算。C语言中提供的位运算包括,与(&)、或(|)、异或(^)、取反(~)、...

  • 高级运算符(Advanced Operators)

    目录 [toc] 位运算符 1. 按位取反运算符~ 2. 按位与运算符& 3. 按位或运算符| 4. 按位异或运算...

网友评论

      本文标题:异或运算&位运算

      本文链接:https://www.haomeiwen.com/subject/idgiwhtx.html