LeetCode 1835. 所有数对按位与结果的异或和(位运算 (ab)^(ac) = a(b^c) )

文章目录

    • 1. 题目
    • 2. 解题

1. 题目

列表的 异或和(XOR sum)指对所有元素进行按位 XOR 运算的结果。
如果列表中仅有一个元素,那么其 异或和 就等于该元素。

例如,[1,2,3,4] 的 异或和 等于 1 XOR 2 XOR 3 XOR 4 = 4 ,而 [3] 的 异或和 等于 3 。
给你两个下标 从 0 开始 计数的数组 arr1 和 arr2 ,两数组均由非负整数组成。

根据每个 (i, j) 数对,构造一个由 arr1[i] AND arr2[j](按位 AND 运算)结果组成的列表。其中 0 <= i < arr1.length 且 0 <= j < arr2.length 。

返回上述列表的 异或和 。

示例 1:
输入:arr1 = [1,2,3], arr2 = [6,5]
输出:0
解释:列表 = [1 AND 6, 1 AND 5, 2 AND 6, 2 AND 5, 3 AND 6, 3 AND 5] = [0,1,2,0,2,1] ,
异或和 = 0 XOR 1 XOR 2 XOR 0 XOR 2 XOR 1 = 0 。示例 2:
输入:arr1 = [12], arr2 = [4]
输出:4
解释:列表 = [12 AND 4] = [4] ,异或和 = 4 。提示:
1 <= arr1.length, arr2.length <= 10^5
0 <= arr1[i], arr2[j] <= 10^9

来源:力扣(LeetCode)
链接:https://leetcode-cn.com/problems/find-xor-sum-of-all-pairs-bitwise-and
著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。

2. 解题

有公式:

(a&b)^(a&c) = a&(b^c)

用程序测试:

#include<bits/stdc++.h>
using namespace std;
int main(){for(int a = 0; a < 2; a++){for(int b = 0; b < 2; b++){for(int c = 0; c < 2; c++){cout << "a = " << a << " b = " << b << " c = " << c;cout << "  (a&b)^(a&c) = " <<  ((a&b)^(a&c));cout << "  a&(b^c) = " <<  (a&(b^c)) << endl;}}}
}
a = 0 b = 0 c = 0  (a&b)^(a&c) = 0  a&(b^c) = 0
a = 0 b = 0 c = 1  (a&b)^(a&c) = 0  a&(b^c) = 0
a = 0 b = 1 c = 0  (a&b)^(a&c) = 0  a&(b^c) = 0
a = 0 b = 1 c = 1  (a&b)^(a&c) = 0  a&(b^c) = 0
a = 1 b = 0 c = 0  (a&b)^(a&c) = 0  a&(b^c) = 0
a = 1 b = 0 c = 1  (a&b)^(a&c) = 1  a&(b^c) = 1
a = 1 b = 1 c = 0  (a&b)^(a&c) = 1  a&(b^c) = 1
a = 1 b = 1 c = 1  (a&b)^(a&c) = 0  a&(b^c) = 0
  • 先对arr1每个 元素求的结果为 a1 & (b1^...^bn), a2 & (b1^...^bn), ... an & (b1^...^bn)
  • 上式写n项再求异或,然后把右边一项提出来有 (a1^a2...^an) & (b1^...^bn)
class Solution {
public:int getXORSum(vector<int>& arr1, vector<int>& arr2) {int xor1 = 0, xor2 = 0;for(auto a : arr1)xor1 ^= a;for(auto a : arr2)xor2 ^= a;return xor1 & xor2;}
};

140 ms 91.2 MB C++

比赛时候按位猜的答案,两边的位必须都有奇数个1答案才为1

class Solution {
public:int getXORSum(vector<int>& arr1, vector<int>& arr2) {int n1 = arr1.size(), n2 = arr2.size();int ans = 0;vector<int> ct1(32), ct2(32);for(int i = 0 ;i < n1 ; i++){for(int j = 0; j < 32; j++){if((arr1[i]>>j) & 1)ct1[j]++;}}for(int i = 0 ;i < n2 ; i++){for(int j = 0; j < 32; j++){if((arr2[i]>>j) & 1)ct2[j]++;}}for(int i = 0; i < 32; ++i){if(ct1[i]%2 && ct2[i]%2)ans |= 1<<i;}return ans;}
};

296 ms 91.4 MB C++


我的CSDN博客地址 https://michael.blog.csdn.net/

长按或扫码关注我的公众号(Michael阿明),一起加油、一起学习进步!
Michael阿明

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/472334.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

python入门基础系列_03python—9个基础常识-python小白入门系列

《python小白入门系列教程》 专栏 • 第03篇 文 | xc_718 深度好文&#xff1a;1828字 | 4分钟阅读 ​ 1. 注释 1&#xff09;单行注释&#xff1a;****# #注释内容 print(123) #123 print(abc) #abc print("abc") #abc **2&#xff09;多行注释&#xff1a; 或 **&q…

css英文左右对齐,中文英文左右padding一致两端对齐实现_js

先看下图&#xff1a;就是一个定宽的容器&#xff0c;左右padding值20像素&#xff0c;结果输入一段文字后(有中文也有英文字符)&#xff0c;会发现右侧根本就不对齐&#xff0c;有些地方距离右侧的空白大小也不是20像素&#xff0c;感觉不和谐&#xff0c;设计师就希望排列能够…

python判断字符类型编程_Python检测数据类型的方法总结

我们在用python进行程序开发的时候&#xff0c;很多时候我们需要检测一下当前的变量的数据类型。比如需要在使用字符串操作函数之前先检测一下当前变量是否是字符串。下面小编给大家分享一下在python中如何检测数据类型 首先我们打开CMD控制台&#xff0c;进入到python环境&…

RDD 编程

文章目录1. RDD 创建2. RDD转换3. RDD动作4. 持久化5. 分区6. 文件数据读写6.1 本地6.2 hdfs6.3 Json文件6.4 Hbase学习自 MOOC Spark编程基础1. RDD 创建 从文件创建 Welcome to____ __/ __/__ ___ _____/ /___\ \/ _ \/ _ / __/ _//___/ .__/\_,_/_/ /_/\_…

用python解决生活问题_Python解决生活问题之闹钟程序的实现

昨天下班回家忘了带手机充电器&#xff0c;手机熄火没闹钟了&#xff0c;可现实是迟到30分钟以内要罚100RMB&#xff0c;超过30分钟算旷工要扣除3天工资&#xff0c;想想这代价&#xff0c;好吧&#xff0c;还是自己动手写一个闹钟程序吧&#xff01; 系统环境&#xff1a; Lin…

推荐系统可利用的特征

学自 极客时间 《深度学习推荐系统实战》 推荐系统就是利用“用户信息”&#xff0c;“物品信息”&#xff0c;“场景信息”这三大部分有价值数据&#xff0c;通过构建推荐模型得出推荐列表的工程系统 特征其实是对某个行为过程相关信息的抽象表达 构建特征原则&#xff1a;尽…

iis无法读取配置文件_SpringBoot 有很多读取配置文件的方法,你知道几个? 静态方法读取呢?...

SpringBoot 如何在静态方法中读取配置文件的值在Spring中呢有很多读取配置文件值的相关注解,读取这些配置文件都是依赖于Spring的方式。我发现的读取配置文件的方式有好几种。1、Value 注解2、ConfigurationProperties 和 EnableConfigurationProperties&#xff08;Compent&am…

LeetCode 1837. K 进制表示下的各位数字总和

文章目录1. 题目2. 解题1. 题目 给你一个整数 n&#xff08;10 进制&#xff09;和一个基数 k &#xff0c;请你将 n 从 10 进制表示转换为 k 进制表示&#xff0c;计算并返回转换后各位数字的 总和 。 转换后&#xff0c;各位数字应当视作是 10 进制数字&#xff0c;且它们的…

微信开发学习日记(一):快速阅读5本书,掌握整体背景

2015年1月开始学习微信开发。已经有多年开发经验了&#xff0c;从网上文章来看&#xff0c;微信开发主要是接口&#xff0c;然后是业务逻辑&#xff0c;不是很难。所以&#xff0c;我比较强调学习效率。一天学一点&#xff0c;是不能满足我的快速学习欲望的。在京东上&#xff…

c语言中把一个数缩小十倍_C语言实例第04期,在控制台打印出著名的杨辉三角...

点击上方“C语言中文社区”&#xff0c;选择“设为星标★”技术干货第一时间送达&#xff01;往期回顾&#xff1a;C语言实例第01期&#xff0c;十进制数转换二进制数C语言实例第02期&#xff0c;判断某一年是否为闰年C语言实例第03期&#xff0c;使用*打印平行四边形实例代码/…

LeetCode 1838. 最高频元素的频数(二分查找)

文章目录1. 题目2. 解题1. 题目 元素的 频数 是该元素在一个数组中出现的次数。 给你一个整数数组 nums 和一个整数 k 。 在一步操作中&#xff0c;你可以选择 nums 的一个下标&#xff0c;并将该下标对应元素的值增加 1 。 执行最多 k 次操作后&#xff0c;返回数组中最高频…

wafer小程序服务器,Wafer - 企业级微信小程序全栈方案

Wafer 服务端 SDK - C#本项目是 Wafer 组成部分&#xff0c;以 SDK 的形式为业务服务器提供以下服务&#xff1a;SDK 获取本项目遵守 MIT 协议&#xff0c;可以直接下载 SDK 源码进行修改、编译和发布。如果使用自动部署并选择 C# 语言&#xff0c;则分配的业务服务器里已经部署…

Android学习按键事件监听与Command模式

Android学习按键事件监听与Command模式 - Dufresne - 博客园 Android学习按键事件监听与Command模式 一 Command模式 意图&#xff1a; 将一个请求封装为一个对象&#xff0c;从而使你可用不同的请求对客户进行参数化&#xff1b; 对请求排队或记录请求日志&#xff0c;以及支持…

fileinputstream_从Java中的FileInputStream读取字节

以下示例显示了如何从Java中的FileInputStream读取字节。import java.io.File;import java.io.FileInputStream;public class fileInputStream {public static void main(String[] args) {byte[] data new byte[1024]; //allocates memory for 1024 bytes//be careful about h…

LeetCode 1839. 所有元音按顺序排布的最长子字符串(滑动窗口)

文章目录1. 题目2. 解题1. 题目 当一个字符串满足如下条件时&#xff0c;我们称它是 美丽的 &#xff1a; 所有 5 个英文元音字母&#xff08;a &#xff0c;e &#xff0c;i &#xff0c;o &#xff0c;u&#xff09;都必须 至少 出现一次。这些元音字母的顺序都必须按照 字…

特征处理

学自 极客时间 《深度学习推荐系统实战》 特征分为两类&#xff1a; 类别特征&#xff08;性别、地理位置、季节、天气、风格&#xff09;数值型特征&#xff08;年龄、收入、点击量、点击率&#xff09; 类别特征经过 One-Hot 编码后放入特征向量、或者 多个的特征值采用 M…

WIN 10 安装 Hadoop 2.7.7 + Spark 2.4.7 记录

文章目录0. 常规解压安装&#xff0c;并添加环境变量1. 下载并覆盖 bin 文件夹2. 使VERSION文件的clusterID一致3. 贴下单机配置4. 测试 Hadoop5. 安装Spark环境&#xff1a;win 10 java 1.8.0_281 Scala 2.11.11 Hadoop 2.7.7 Spark2.4.70. 常规解压安装&#xff0c;并添加…

canal mysql从库_canal中间件|数据增量同步解决方案

上一文中提到延时双删等策略实现数据一致性的时候&#xff0c;可能存在删除缓存失败的情况&#xff0c;就会出现缓存和数据库不一致的问题。为了应对删除缓存失败而导致数据不一致的问题&#xff0c;可以通过回溯数据库日志文件&#xff0c;提供一个保障的重试机制即可。流程如…

dbscan聚类算法matlab_密度聚类DBSCAN、HDBSCAN(转)

&#xfeff;# 密度聚类DBSCAN、HDBSCANDBSCANDBSCAN&#xff08;Density-Based Spatial Clustering of Applications with Noise&#xff0c;具有噪声的基于密度的聚类方法&#xff09;是一种基于密度的空间聚类算法。该算法将具有足够密度的区域划分为簇&#xff0c;并在具有…

Spark IDEA 编程环境配置

文章目录1. 下载资料准备2. 建立项目、添加环境设置3. 第一个 Spark 程序学自&#xff1a;Spark机器学习实战 https://book.douban.com/subject/35280412/ 记录一下踩过的坑&#xff1a; 环境&#xff1a;win 10 java 1.8.0_281 Scala 2.11.11 Hadoop 2.7.7 Spark2.4.7 …