LeetCode异或运算

LeetCode异或运算,第1张

  • 异或运算的规则就是两个相同的数异或之后的结果为0,0和其他不为0的数异或之后的结果为后者,而且异或运算支持交换律和结合律,有了这些定义使得有些算法可以很巧妙的使用异或运算解决问题。

  • 加法运算

    异或可以不使用+号实现两个数相加,两个数异或的结果就是它们相加的结果

#include 
using namespace std;

int main() {
	int single =20;
	single ^=10;
	cout<

输出结果为30

  • 只出现一次的次数
    也是最神奇的一个功能,也是因为这个题才写这个,LeetCode上一道题目:
class Solution {
public:
    int singleNumber(vector& nums) {
        int temp = 0;
        for(int num:nums){
            temp = temp ^ num;
        }
        return temp;
    }
};
  • 异或运算有以下三个性质。
    任何数和 0 做异或运算,结果仍然是原来的数,即 a⊕0=a。
    任何数和其自身做异或运算,结果是 0,即 a⊕a=0。
    异或运算满足交换律和结合律,即 a⊕b⊕a=b⊕a⊕a=b⊕(a⊕a)=b⊕0=b

欢迎分享,转载请注明来源:内存溢出

原文地址:https://54852.com/langs/676402.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2022-04-19
下一篇2022-04-19

发表评论

登录后才能评论

评论列表(0条)