首页 > 其他分享 >1835. 所有数对按位与结果的异或和

1835. 所有数对按位与结果的异或和

时间:2023-04-13 14:45:20浏览次数:40  
标签:1835 int 数对 List 异或 按位 arr2 arr1

题目描述

给了列表异或和的定义
现在的列表是arr1和arr2构造出来的,元素对是arr[i] and arr[j]
问以上列表的异或和?

f1-依次确定答案的每一位

基本分析

  1. 为什么考虑计算答案的每一位?表达式只包含位运算(按位与 和按位异或)
  2. 具体怎么计算?要知道答案的第k为是1还是0->分别计算arr1和arr2中第k为的1的个数,只有都是奇数时候才是1

代码

class Solution:
    def getXORSum(self, arr1: List[int], arr2: List[int]) -> int:
        
        ans = 0
        for k in range(30, -1, -1):
            cnt1 = sum(1 for d in arr1 if d & (1<<k))
            cnt2 = sum(1 for d in arr2 if d & (1<<k))
            if cnt1 & 1 and cnt2 & 1:
                ans |= 1 << k
        
        return ans

总结

  1. 推导需要再消化
f2-公式变形

基本分析

  1. 怎么进行变形?(a & b) ^ (a & c) = a & (b ^ c)
  2. 最终结果?数组的异或和再与

代码

class Solution:
    def getXORSum(self, arr1: List[int], arr2: List[int]) -> int:
        return reduce(xor, arr1, 0) & reduce(xor, arr2, 0)

总结

  1. 记住结论

标签:1835,int,数对,List,异或,按位,arr2,arr1
From: https://www.cnblogs.com/zk-icewall/p/17314755.html

相关文章

  • UVa 11507 Bender B. Rodríguez Problem (模拟&异或)
    11507-BenderB.RodríguezProblemTimelimit:4.000secondshttp://uva.onlinejudge.org/index.php?option=com_onlinejudge&Itemid=8&category=24&page=show_problem&problem=2502Benderisarobotbuiltby Mom'sFriendlyRobotCompany atits......
  • P1835 素数密度
    给定区间[L,R](1≤R<(1<<30) R−L≤1e6),请计算区间中素数的个数。筛出sqrt(R)的质数p,遍历L~R的数,看能否被p约分,也就是合数,打个标记 #include<iostream>#include<cstring>#include<cmath>#include<algorithm>usingnamespacestd;constintM=1e6+30;......
  • 与& 或| 异或^ 的三个常见用途
    与&或|异或^的三个常见用途1.与&作为掩码(bitmask)屏蔽比特串的一部片/提取比特串的一部分a=0b11010101#Binaryb=0b00000111#Bitmaskc=a&b#c=0b00000101#b作为掩码和a进行与操作后,保留了a的后三位,其余位全设为0被屏蔽了2.或|设1(set)a=0b11010101#......
  • 2563. 统计公平数对的数目
    题目链接:2563.统计公平数对的数目方法:排序+二分解题思路(1)先对数组进行排序,排序之后并不影响公平数对的数目;(2)对于任意一个\(j\),它的公平数对\((i,j)\)满足\(lower-nums[j]≤nums[i]≤upper-nums[j]\),即在\([0,j]\)范围中找满足条件的\(i\)的个数,通过二分......
  • 4月7日leetcode随笔,异或的灵活运用
    给你一个非空整数数组nums,除了某个元素只出现一次以外,其余每个元素均出现两次。找出那个只出现了一次的元素。你必须设计并实现线性时间复杂度的算法来解决此问题,且该算法只使用常量额外空间。来源:力扣(LeetCode)链接:https://leetcode.cn/problems/single-number著作权归领扣......
  • Python源码笔记——Python中的整数对象
    1.整数对象在Python3.11.2中,整数结构体叫做PyLongObject。#ifPYLONG_BITS_IN_DIGIT==30typedefuint32_tdigit;...#elifPYLONG_BITS_IN_DIGIT==15typedefunsignedshortdigit;...#else#error"PYLONG_BITS_IN_DIGITshouldbe15or30"#endiftypedefstruc......
  • python基础七(函数名称空间及作用域、函数对象、函数嵌套、闭包函数、装饰器)
    一名称空间(namespaces):存放名字的地方,是对栈区的划分。 有了名称空间之后,就可以在栈区中存放相同的名字,详细的名称空间。分三种1.1内建名称空间存放的名字:存放的python解释器内置的名字print<built-infunctionprint>存活周期:python解释器启动则产生,python解释器关闭则销毁......
  • 一篇关于异或操作的题解 (来源:杭电oj: find your present (2))
    害惭愧惭愧老长时间没写代码了——————————转回正题,对于杭电这个题先说我超时的错误想法—————————————————————————————————————————————————————————————— 一开始我的想法是开一个大小为100000......
  • 异或运算^无符号右移>>>&与运算
    1. <<(向左位移)针对二进制,转换成二进制后向左移动2位,后面用0补齐10的二进制101000000000000000000000000000001010---32位00000000000000000000000000101......
  • C++智能指针、绑定器和函数对象、lambda表达式
    智能指针​ 智能指针可以保证资源的自动释放不带引用计数的智能指针auto_ptr只让最后一个指向的指针管理资源,之前的auto_ptr会被置为nullptrscoped_ptr删除了拷贝构造......