找出所有子集的异或总和再求和
一个数组的 异或总和 定义为数组中所有元素按位 XOR 的结果;如果数组为 空 ,则异或总和为 0 。
例如,数组 [2,5,6] 的 异或总和 为 2 XOR 5 XOR 6 = 1 。
给你一个数组 nums ,请你求出 nums 中每个 子集 的 异或总和 ,计算并返回这些值相加之 和 。
注意:在本题中,元素 相同 的不同子集应 多次 计数。
数组 a 是数组 b 的一个 子集 的前提条件是:从 b 删除几个(也可能不删除)元素能够得到 a 。
示例 1:
输入:nums = [1,3]
输出:6
解释:[1,3] 共有 4 个子集:
- 空子集的异或总和是 0 。
- [1] 的异或总和为 1 。
- [3] 的异或总和为 3 。
- [1,3] 的异或总和为 1 XOR 3 = 2 。
0 + 1 + 3 + 2 = 6
示例 2:
输入:nums = [5,1,6]
输出:28
解释:[5,1,6] 共有 8 个子集:
- 空子集的异或总和是 0 。
- [5] 的异或总和为 5 。
- [1] 的异或总和为 1 。
- [6] 的异或总和为 6 。
- [5,1] 的异或总和为 5 XOR 1 = 4 。
- [5,6] 的异或总和为 5 XOR 6 = 3 。
- [1,6] 的异或总和为 1 XOR 6 = 7 。
- [5,1,6] 的异或总和为 5 XOR 1 XOR 6 = 2 。
0 + 5 + 1 + 6 + 4 + 3 + 7 + 2 = 28
示例 3:
输入:nums = [3,4,5,6,7,8]
输出:480
解释:每个子集的全部异或总和值之和为 480 。
提示:
1 <= nums.length <= 12
1 <= nums[i] <= 20
class Solution{public:vector<vector<int>> s;void isSubset(vector<int>& nums,vector<int>& path,int pos){//计算出所有子集s.push_back(path);for(int i=pos;i<nums.size();i++){path.push_back(nums[i]);isSubset(nums,path,i+1);path.pop_back();}}int subsetXORSum(vector<int>& nums) {int sum=0;vector<int> path;isSubset(nums,path,0);for(int i=0;i<s.size();i++ ){int a=0;for(int j=0;j<s[i].size();j++){a=a^s[i][j];//计算每个子集的异或和}sum+=a;//计算子集之间的异或和的总和}return sum;}
};
找出所有子集的异或总和再求和相关推荐
- LeetCode 1863. 找出所有子集的异或总和再求和(DFS)
文章目录 1. 题目 2. 解题 1. 题目 一个数组的 异或总和 定义为数组中所有元素按位 XOR 的结果:如果数组为 空 ,则异或总和为 0 . 例如,数组 [2,5,6] 的 异或总和 为 2 ...
- python查找数列中重复数字_在数组中找出重复的数字(异或法)
购买本课程后,可以加51CTO学院李宁老师官方交流群:550369460注意,该群只允许购买李宁老师课程的学员进行技术交流,加群时需要提供在51CTO购买李宁老师课程的订单编号(任何一个课程的订单编号 ...
- 找出重复两次的数--有且只有一个数字重复两次,其余都不重复
问题描述:数字范围是0-99的整数,给出101个整数,其中只有一个是重复两次的数,找出这个数 分析:如果是有序的话,遍历一次就可以找出 方法一 :先排序,再遍历,遍历超过一次 方法二 :只是排序,排序 ...
- python步骤解析 给定一个整数数组和目标值_给定一个整数数组和一个目标值,找出数组中和为目标值的两个数 例如给定nums = [2,7,11,15],target = 9...
python解决方案 nums = [1,2,3,4,5,6] #假如这是给定的数组 target = 9 #假如这是给定的目标值 num_list = [] #用来装结果的容器 def run(nu ...
- 找出列表中重复数的下标
例如有一个数字列表里有重复的数字 比如[12,234,45,21,12,456,33,25,33,47 ,12, 645, 23,12 ,4, 33], 求这个数字在列表中所有的下标(比如12,33所 ...
- MATLAB函数判断绝对素数,自定义函数,找出 以内所有素数(质数)并计算它们的和,matlab...
C++,VC2008,问题是 编写一个函数,找出3~1000之内,所有的素数.求高手!我在线等 #include#includevoidf(){//筛法charprime[1001];memset(p ...
- 从数组中找出最大的两个数
题目:从数组区间A[lo, hi]中找出最大的两个整数A[x1]和A[x2],要求元素比较的次数尽可能的少. 迭代版1: 如图所示,当整个扫描一遍数组A,找出最大的数x1后,再扫描一次数组剩下的除去x ...
- 打一句英文句子,找出其中最长的单词
找出其中最长的单词,最主要的是要把输入的字符串转换为一个嵌套的数组,因为数组可以把你字符串中的空格自动给你省略掉.而且嵌套在里面的数组,可以用length来计算它的长度,就相当于你数出了那个单词的长度 ...
- 698. 划分为k个相等的子集:给定一个整数数组 nums 和一个正整数 k,找出是否有可能把这个数组分成 k 个非空子集,其总和都相等。
题目描述 给定一个整数数组 nums 和一个正整数 k,找出是否有可能把这个数组分成 k 个非空子集,其总和都相等. 示例 1: 输入: nums = [4, 3, 2, 3, 5, 2, 1], k ...
最新文章
- 计算机一级判断题2016,2016年12月计算机一级考试WPS判断题及答案
- java gson 工具类_gson工具类将Java类转换为json的使用
- Android SwipeRefreshLayout 官方下拉刷新控件介绍
- 【数字信号处理】线性时不变系统 LTI “ 输入 “ 与 “ 输出 “ 之间的关系 ( LTI 系统单位脉冲响应 | 卷积 | 卷积推导过程 )
- 2019河北高职计算机专科学校录取分数线,2019河北高考专科院校录取分数线_专科各院校投档线_一品高考网...
- python2安装pyyaml_Python3安装Pyyaml
- python语言的数据类型图解_Python基础——数据类型(图解+实例,非常详细!)
- DxOMark排名更新榜首易主 华为被拉下马:我还会回来的!
- Jmeter安装设置
- day10【过渡】分布式理论
- DataSource接口 Connection pooling(连接池
- BP神经网络简单应用实例,bp神经网络应用举例
- android webview支持webgl,Android WebView支持WebGL
- 《开店有讲究》读书笔记
- mumu模拟器命令安装apk
- 【云原生】K8S包管理(helm)
- print 设置纸张的高度_祝贺! 2020珠峰高程测量登山队成功登顶!用Python计算一张纸对折多少次会超过珠峰高度?...
- (动归三剑客)打家劫舍 (动归三剑客)
- 【强烈推荐】超详解Python-魔法函数(高级语法)
- python画二维温度云图_lammps温度云图