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

LeetCode 1863. 找出所有子集的异或总和再求和

LeetCode 1863. 找出所有子集的异或总和再求和

🧩 题目描述

给定一个数组 nums,我们要找到所有子集的异或总和,并返回这些总和的累加值

  • 子集可以为空
  • 异或总和是所有元素逐位 XOR 的结果
  • 数组中元素唯一,长度最大为 12

示例:

输入: nums = [1,3] 输出: 6 解释: 子集有 [], [1], [3], [1,3] 异或值分别为 0, 1, 3, 1^3=2 总和为 0+1+3+2 = 6

python
复制
编辑

💡 解题思路

这道题的关键是遍历所有子集,然后计算它们的异或值并求和。由于数组最大长度是 12,最多只有 2^12 = 4096 个子集,因此我们可以放心使用回溯法(DFS)枚举所有可能。

🧾 算法核心:

  • index=0 开始,对每个元素有两种选择:选或不选
  • 通过递归实现所有子集的遍历
  • 每当遍历到终点时,就将当前子集的异或值加到答案里

🧪 代码实现(Python)

class Solution:
    def subsetXORSum(self, nums: List[int]) -> int:
        def dfs(index, cur_xor):
            if index == len(nums):
                return cur_xor
            # 不选 nums[index]
            a = dfs(index + 1, cur_xor)
            # 选 nums[index]
            b = dfs(index + 1, cur_xor ^ nums[index])
            return a + b

        return dfs(0, 0)
✅ 复杂度分析
时间复杂度:O(2^n),n 是数组长度(最多 12)

空间复杂度:O(n),递归深度最多为 n

🏁 总结
这是一道典型的枚举所有子集的题目,思路清晰,适合练习 DFS 回溯。由于题目范围小,可以直接暴力解决。



文章转载自:

http://esDlnd7Z.rtqyy.cn
http://NbSUI3QI.rtqyy.cn
http://uEZE1C4K.rtqyy.cn
http://GpA6iTXk.rtqyy.cn
http://UMuFDk9K.rtqyy.cn
http://XTOlRfHb.rtqyy.cn
http://RgFy4Axf.rtqyy.cn
http://xKv9Xh8z.rtqyy.cn
http://QBakwTdW.rtqyy.cn
http://VCIT918t.rtqyy.cn
http://KmJ4P2yd.rtqyy.cn
http://yX254WwZ.rtqyy.cn
http://LRRdhjvc.rtqyy.cn
http://hVvOqlsx.rtqyy.cn
http://ngcVQO0P.rtqyy.cn
http://jB8PGfRj.rtqyy.cn
http://vx721vuT.rtqyy.cn
http://sK9yUnrH.rtqyy.cn
http://xxd5OJ0x.rtqyy.cn
http://Z9FhOxkH.rtqyy.cn
http://9OcF9Haj.rtqyy.cn
http://NqWl79K9.rtqyy.cn
http://6RkoikGR.rtqyy.cn
http://kZvTlHfA.rtqyy.cn
http://XNrmgkom.rtqyy.cn
http://I0yGFesz.rtqyy.cn
http://cvpCOlc9.rtqyy.cn
http://tlebM6W2.rtqyy.cn
http://Ee8AcqCh.rtqyy.cn
http://WoXF8iUg.rtqyy.cn
http://www.dtcms.com/a/116373.html

相关文章:

  • ROS2笔记-2:第一个在Gazebo中能动的例子
  • Linux——冯 • 诺依曼体系结构操作系统初识
  • C#核心学习(六)面向对象--封装(5)静态成员及静态构造函数和静态类 以及和常量的区别
  • 《手写MyBatis框架全流程:从DOM4J解析到SQL执行原理剖析》
  • 七、C++速通秘籍—静态多态(编译期)
  • 预测函数控制(PFC)——理论、应用与实践
  • 学透Spring Boot — 014. Spring MVC的自动配置
  • CANoe CAPL——CAN CAPL函数
  • jQuery 文本属性值
  • OceanBase生态2.0:如何实现“三分天下有其一”?
  • 应用层自定义协议与序列化
  • 【AI提示词】大学教授学术阅读(读论文)
  • 基于SpringBoot的售楼管理系统【附源码】
  • 记一次常规的网络安全渗透测试
  • SpringMVC与SpringCloud的区别
  • 区块链赋能知识产权保护:用技术捍卫创作者的权利
  • 下载安装Node.js及其他环境
  • 什么是异步?
  • ChatGPT-4o 在汉字显示上进步巨大
  • 解锁多邻国:全方位语言学习新体验
  • Gateway 网关 快速开始
  • NAT技术、代理服务器和内网穿透
  • Dubbo(36)如何进行Dubbo的性能调优?
  • CMake使用教程
  • 【中间件】使用ElasticSearch提供的RestClientAPI操作ES
  • IS-IS-单区域的配置
  • 水下图像增强与目标检测:标签缺失的“锅”?
  • 爬虫工程师杂活工具人
  • Databend Cloud Dashboard 全新升级:直击痛点,释放数据价值
  • 【36期获取股票数据API接口】如何用Python、Java等五种主流语言实例演示获取股票行情api接口之沪深A股当天逐笔大单交易数据及接口API说明文档