尧图网站建设 尧图网络
  • 首页
  • 关于我们
  • 服务项目
  • 案例展示
  • 建站流程
  • 资讯中心
  • 联系我们
首页/资讯中心/详情

DeepSeek LeetCode 3630. 划分数组得到最大异或运算和与运算之和 Java实现

DeepSeek    LeetCode 3630. 划分数组得到最大异或运算和与运算之和 Java实现
📅 发布时间:2026/7/21 6:29:45

```java
class Solution {
public long maximizeXorAndXor(int[] nums) {
int n = nums.length;
int totalMasks = 1 << n; // 2^n
int allMask = totalMasks - 1;

// 预计算所有子集的按位与、异或和或的值
int[] andVal = new int[totalMasks];
int[] xorVal = new int[totalMasks];
int[] orVal = new int[totalMasks];

// 空集:异或=0,或=0,与用-1占位,后续再修正为0
andVal[0] = -1;
xorVal[0] = 0;
orVal[0] = 0;

for (int mask = 1; mask < totalMasks; mask++) {
// 提取最低位的1
int lb = mask & -mask;
int idx = Integer.numberOfTrailingZeros(lb);
int prev = mask ^ lb; // 移除该元素后的子集

xorVal[mask] = xorVal[prev] ^ nums[idx];
// 前一个子集为空时,与结果直接为该元素
andVal[mask] = (prev == 0) ? nums[idx] : (andVal[prev] & nums[idx]);
orVal[mask] = orVal[prev] | nums[idx];
}
// 将空集的与修正为0
andVal[0] = 0;

long best = 0;

// 枚举B子集
for (int bMask = 0; bMask < totalMasks; bMask++) {
int remainMask = allMask ^ bMask; // 分配给A和C的元素

// 剪枝:理论上界都无法超越当前最优则跳过
// maxAndB = andVal[bMask], max(A^C) <= OR(remain), 因为异或结果的每一位不会超过或运算
if (andVal[bMask] + (long) orVal[remainMask] * 2 - xorVal[remainMask] <= best) {
continue;
}

// 枚举A子集(A是remainMask的子集)
for (int aMask = remainMask; ; aMask = (aMask - 1) & remainMask) {
int cMask = remainMask ^ aMask;
long sum = (long) xorVal[aMask] + andVal[bMask] + xorVal[cMask];
if (sum > best) {
best = sum;
}
if (aMask == 0) break;
}
}

return best;
}
}
```

核心思路与复杂度

这道题数据范围n <= 19,是典型的状态压缩枚举题。

1. 解法思想

· 子集枚举:数组长度最大19,可以用位掩码表示每个元素属于哪个子集。枚举B子集的所有情况,再从剩余元素中枚举A子集,C自然确定。
· 预计算加速:提前算出所有子集的异或、与、或值,枚举时直接查表,避免重复计算。
· 剪枝优化:利用XOR(A) + XOR(C) <= OR(A∪C) * 2 - XOR(A∪C)这个上界进行剪枝,能跳过很多无效枚举。

2. 时间复杂度

· O(3^n):枚举B (2^n),枚举其子集A平均(3^n/2^n),总枚举量3^n。n <= 19时约1.16e9,但剪枝后实际运行会快很多。

相关新闻

  • Unity跨平台文件对话框实战:从原生API到CompactStandaloneFileBrowser
  • TI eHRPWM寄存器深度解析:从时基到死区的电机控制实战配置
  • C++智能仓储系统性能优化:从内存管理到并发重构的工程实践

最新新闻

  • 合扬奢品黄金回收昆明,实时大盘价不扣损耗,全城 24 小时在线估价 - 生活商业速报
  • GitHub 热门项目深度解析:MemPalace 如何重新定义人机协作的未来
  • 智能工厂申报必读:四级梯度,逐级攀登,一步都不能跳!
  • 深入解析TI DCAN控制器:架构、初始化与实战调试指南
  • 「盘点」开发工具PyCharm全新升级的新UI(一)
  • 自动驾驶核心算法盘点|目标跟踪与轨迹预测篇

日新闻

  • Python开发内部工具:7大核心库实战解析
  • 合肥雷达官方2026年7月最新信息:客户服务网点地址与售后热线权威公示 - 亨得利官方服务中心
  • PCA实战指南:从变量纠缠诊断到主成分业务解读

周新闻

  • SaaS软件行业GEO实践:AI搜索时代的品牌可见性与获客新路径
  • 什么是PCTFE?医药高端包装的“防潮王牌“材料
  • 【JVM调优实战】16-可视化利器-JConsole-VisualVM-JMC

月新闻

  • 2026年6月公司网站搭建最新热门渠道测评:四大低成本/零代码平台对比+避坑
  • 【Linux】Linux arm 编译QT程序,出现expected “}“报错
  • 【MATLAB例程】四基站二维AOA定位与距离辅助增强对比仿真。基于角度观测和测距修正的固定目标平面定位精度分析

关于尧图

  • 公司简介
  • 团队介绍
  • 企业文化
  • 荣誉资质

服务项目

  • 定制开发
  • 电商建站
  • UI 设计
  • 运维服务

快速链接

  • 案例展示
  • 建站流程
  • 常见问题
  • 资讯中心

联系方式

  • 📍北京市朝阳区互联网产业园 A 座 10 层
  • 📞400-888-8888
  • ✉️contact@rkmt.cn
  • 🕐周一至周日 9:00-21:00

© 2024 北京尧图网络科技有限公司 版权所有 | 京 ICP 备 XXXXXXXX 号