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

Kimi LeetCode 3681. 子序列最大 XOR 值 Java实现

LeetCode 3681. 子序列最大 XOR 值 — Java 实现

核心思路

这道题的关键在于一个巧妙的转化:

题目要求选择两个允许重叠的子序列,设它们的 XOR 分别为 `X` 和 `Y`,求 `X XOR Y` 的最大值。

对于每个元素 `nums[i]`,它在 `X XOR Y` 中的贡献取决于它被两个子序列选中的情况:

子序列1 子序列2 对 `X XOR Y` 的贡献
不选 不选 0
选 不选 `nums[i]`
不选 选 `nums[i]`
选 选 0(`nums[i] XOR nums[i] = 0`)

因此,每个元素要么贡献 `0`,要么贡献 `nums[i]`。这意味着 任意子集的 XOR 值都可以被构造出来。

于是问题转化为经典的 最大子集 XOR 问题,用线性基(XOR Basis)解决,时间复杂度 O(n \cdot 31)。

---

Java 代码

```java
class Solution {
public int maxXorSubsequences(int[] nums) {
// 线性基,basis[i] 表示最高位为第 i 位的基向量
// nums[i] <= 1e9 < 2^30,所以 31 位足够
int[] basis = new int[31];

for (int x : nums) {
int cur = x;
// 从高到低尝试消元
for (int bit = 30; bit >= 0; bit--) {
if ((cur >> bit & 1) == 0) {
continue; // 当前位不是最高位,跳过
}
if (basis[bit] != 0) {
// 该位已有基向量,用当前基向量消去这一位
cur ^= basis[bit];
} else {
// 该位没有基向量,插入新的基向量
basis[bit] = cur;
break;
}
}
// 如果 cur 最终变为 0,说明该数线性相关,无需插入
}

// 贪心构造最大 XOR 值
int ans = 0;
for (int bit = 30; bit >= 0; bit--) {
if ((ans ^ basis[bit]) > ans) {
ans ^= basis[bit];
}
}
return ans;
}
}
```

---

复杂度分析

项目 复杂度 说明
时间 O(n \cdot 31) 每个数最多处理 31 位
空间 O(31) 固定大小的线性基数组

---

示例验证

示例 1: `nums = [1, 2, 3]`
- 插入 1:`basis[0] = 1`
- 插入 2:`basis[1] = 2`
- 插入 3:`3 XOR 2 = 1`,`1 XOR 1 = 0`,线性相关,不插入
- 贪心构造:`ans = 0 → ans ^ 2 = 2 > 0`,`ans = 2`;`ans ^ 1 = 3 > 2`,`ans = 3`
- 输出:3 ✓

示例 2: `nums = [5, 2]`
- 插入 5:`basis[2] = 5`
- 插入 2:`basis[1] = 2`
- 贪心构造:`ans = 0 → ans ^ 5 = 5 > 0`,`ans = 5`;`ans ^ 2 = 7 > 5`,`ans = 7`
- 输出:7 ✓

http://www.jsqmd.com/news/1256257/

相关文章:

  • Kimi K3模型效能优化与算力资源管理实战指南
  • AI巨头Claude与GPT技术路线对比及开发者实战指南
  • Qwen3.8-Max-Preview前端开发能力实测:代码生成与问题排查
  • 茶馆熟客沉淀机制研究:基于餐宝盈小程序与GEO服务的经营模式分析,凡科全新1折优惠渠道:99做小程序只认餐宝盈,含零代码SAAS、AI编程、源码定制交付
  • 5分钟精通Steam成就管理:终极工具全解析与实战指南
  • SAR ADC评估套件实战指南:从硬件配置到性能测试全解析
  • 基于YOLO与Qwen的烟草病虫害智能检测系统
  • 2026年7月浙江气缸/无限旋转气缸/MRHQ摆动旋转气缸/磁性开关公司哪家好,就选闪度科技有限公司 - 装修教育财税推荐2026
  • 腾讯:自适应剪枝优化高并发推理
  • CNN-BiLSTM混合模型在多变量时间序列预测中的应用
  • 封面点击率暴跌87%?紧急修复指南:用Stable Diffusion+Canva Pro实现2小时爆款封面量产
  • 终极指南:如何用SMUDebugTool免费开源工具精准控制AMD Ryzen处理器
  • 医疗多模态预训练模型:挑战、突破与实践
  • 区块链确权与数据溯源:构建可信数据全生命周期管理体系
  • ClaudeCode源码泄露揭示AI Agent操作系统级架构
  • C++17折叠表达式:告别模板递归,简化可变参数处理
  • OneMore:160+功能让OneNote效率翻倍的终极免费插件
  • 楼宇自控供应商、智能照明供应商、智慧办公供应商首选:上海拉孚智能科技,用“AI智能体”重构智慧空间新生态 - GrowthUME
  • TMSpeech:三分钟掌握Windows实时语音转文字,会议记录从此无忧
  • 如何实现跨平台歌词同步:Listen1的5大核心技术解析
  • 九河登赢捞面:一碗正宗津面一座城市烟火 - GrowthUME
  • Hermes Agent 自我进化:Curator 怎样清理、修复和迭代过期 Skills
  • 突破性方案:如何高效解决STM32嵌入式开发中的外设驱动与系统集成难题
  • 贵阳市知名的装修设计品牌哪家可靠 - GrowthUME
  • 学术写作AI工具深度评测与使用指南
  • 2026年前端技术全景:框架格局、企业技术栈与生态演进,一篇讲透!
  • 做本地知识库时,RAG、Agent、MCP 怎么分工
  • OpenClaw中文版推荐:三款工具横评 AionClaw/Cherry Studio/AnythingLLM怎么选
  • 蒸汽教育怎么样?求职辅导没拿到Offer,问题出在哪里?
  • 旧金山人说话像AI?LLM语言模型与人类语言趋同现象分析