当前位置: 首页 > news >正文

[子集问题] 找出所有子集的异或总和再求和

1863. 找出所有子集的异或总和再求和 - 力扣(LeetCode)

一个数组的 异或总和 定义为数组中所有元素按位 XOR 的结果;如果数组为  ,则异或总和为 0 。

  • 例如,数组 [2,5,6] 的 异或总和 为 2 XOR 5 XOR 6 = 1 。

给你一个数组 nums ,请你求出 nums 中每个 子集 的 异或总和 ,计算并返回这些值相加之  。

思路:

1.先找出元素所有子集

2.遍历每个子集,求出异或和,汇总

class Solution {
public:
    int subsetXORSum(vector<int>& nums) {
        int n=nums.size();
        int probNum=1<<n;
        vector<vector<int>>subsets;
        for(int i=0;i<probNum;i++){
            vector<int>item;
            for(int j=0;j<n;j++){
                //当前j元素被包含在生成的子集中
                if(i&(1<<j)){
                    item.push_back(nums[j]);
                }
            }
            subsets.push_back(item);
        }

        int res=0;
        //遍历子集,求异或和
        for(auto item:subsets){
            //如果子集大小为1,异或和为它本身
            if(item.size()==1)
                res+=item[0];
            else if(item.size()>1){
                int tmp=item[0];
                for(int i=1;i<item.size();i++)
                    tmp=tmp^item[i];
                res+=tmp;
            }
        }
        return res;
    }
};

相关文章:

  • 网络安全-等级保护(等保) 0. 前言
  • 《如何避免虚无》速读笔记
  • 基于编程的运输设备管理系统设计(vue+springboot+ssm+mysql8.x)
  • 网络传输H.264方法对比
  • Linux命令-cut
  • CKPT文件是什么?
  • 7B斗671B:扩散模型能否颠覆自回归霸权?
  • Java学习总结-缓冲流性能分析
  • 制造装备物联及生产管理ERP系统设计与实现(代码+数据库+LW)
  • 【论文推荐|滑坡检测·空间预测·时间预测· 数据驱动的分析】机器学习在滑坡研究中的最新进展与应用(2022)(七)
  • 35信号和槽_信号槽小结
  • 【NLP 面经 7、常见transformer面试题】
  • 解决 Spring Boot 返回日期格式问题
  • C 语言高级编程指南:回调函数与设计模式
  • 晶晨S905L3S/S905L3SB_安卓9.0_10秒开机_通刷-线刷固件包
  • vite 6.2.5 更新速递:告别SVG路径Bug,构建效率再提升!
  • bat_01_参数%*是什么功能?
  • 【7】搭建k8s集群系列(二进制部署)-master节点之配置kubectl客户端证书
  • 优化 Web 性能:避免第三方门面(Third-Party Facades)
  • Wireshark 安装保姆教程(图文详解)