news 2026/10/27 10:29:10

DeepSeek LeetCode 421. 数组中两个数的最大异或值 Java实现

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
DeepSeek LeetCode 421. 数组中两个数的最大异或值 Java实现

LeetCode 421. 数组中两个数的最大异或值

思路一:前缀树(Trie,推荐)

核心思路: 把所有数按二进制从高位到低位插入一棵 Trie(0/1 二叉树)。然后对于每个数 num,在 Trie 中贪心地找一条"尽量与 num 当前位不同"的路径,这样异或结果的当前位才能是 1。

为什么从高位开始?因为高位对结果的贡献更大,高位能取 1 就一定优先取 1。

classSolution{publicintfindMaximumXOR(int[]nums){// 每个数 31 位,最多 nums.length * 31 个节点(+1 给根节点)intmaxNodes=nums.length*31+1;int[][]trie=newint[maxNodes][2];// trie[u][b] 表示 u 的孩子 b 的编号,0 表示不存在intsize=1;// 根节点编号为 0,size 从 1 开始分配// 1. 把所有数字插入 Trie(从高位到低位)for(intnum:nums){intnode=0;for(inti=30;i>=0;i--){intbit=(num>>i)&1;if(trie[node][bit]==0){trie[node][bit]=size++;}node=trie[node][bit];}}// 2. 对每个数字,在 Trie 中贪心找"异或最大"的搭档intans=0;for(intnum:nums){intnode=0,cur=0;for(inti=30;i>=0;i--){intbit=(num>>i)&1;intwant=bit^1;// 希望走不同分支if(trie[node][want]!=0){cur|=(1<<i);// 该位能贡献 1node=trie[node][want];}else{node=trie[node][bit];// 只能走相同分支}}ans=Math.max(ans,cur);}returnans;}}

复杂度: 时间 O(n * 31),空间 O(n * 31)。


思路二:按位贪心 + 前缀集合(更简洁)

核心思路: 从高位到低位逐位构造答案。假设当前答案是 ans,尝试让第 i 位变成 1(candidate = ans | (1 << i)),然后检查是否存在两个数的前缀异或恰好等于 candidate。

判定技巧:若 a ^ b = candidate,则 b = a ^ candidate,只需用 HashSet 检查即可。

classSolution{publicintfindMaximumXOR(int[]nums){intans=0,mask=0;for(inti=30;i>=0;i--){mask|=(1<<i);// 保留高 i+1 位Set<Integer>prefixSet=newHashSet<>();for(intnum:nums)prefixSet.add(num&mask);intcandidate=ans|(1<<i);// 假设第 i 位能为 1for(intprefix:prefixSet){if(prefixSet.contains(prefix^candidate)){ans=candidate;// 假设成立break;}}}returnans;}}

复杂度: 时间 O(n * 31),空间 O(n)。


对比总结

方法 时间 空间 特点
Trie(前缀树) O(n·31) O(n·31) 面试常考,体现 Trie 结构思想
按位贪心 + HashSet O(n·31) O(n) 代码短、空间小,面试可作加分项

建议先讲清 Trie 的解法(体现对字典树结构的理解),再补充按位贪心的思路,展示对位运算的深入理解。

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/10/27 10:28:29

你的组织使用了windowsdefender来阻止

基本就是病毒导致的 下载 360急救箱 进行扫描 http://www.360.cn/firstaid/index.html 加上 下载 火绒恶性木马专杀工具 进行扫描 https://bbs.huorong.cn/thread-18575-1-1.html 等待扫描完成 按照情况进行重启电脑就能解决

作者头像 李华
网站建设 2026/10/27 10:28:23

当用户在AI里搜竞品,你的产品隐形了

很多做软件的人习惯了每天盯分析后台&#xff0c;看某个关键词掉了几个排名、带来了多少自然搜索点击。但当潜在客户直接打开各类AI对话工具&#xff0c;敲下“做轻量项目管理有什么好用的独立工具”时&#xff0c;你的产品有没有出现在那段生成的推荐里&#xff0c;现在几乎没…

作者头像 李华
网站建设 2026/10/27 10:24:39

6、Kubernetes的Servicekube‑proxy

一、VS Code 编写 K8s 资源文件1.1 安装与扩展VS Code 分 User Installer / System Installer&#xff0c;功能无差别&#xff0c;仅安装位置、自动更新权限不同。两个必备扩展&#xff1a;YAML by Red Hat&#xff1a;通用 YAML 支持&#xff0c;负责语法校验、Schema 校验、字…

作者头像 李华
网站建设 2026/10/27 10:23:57

大模型开发工程师薪资40K起步?揭秘入行真相,小白必收藏!

大模型开发工程师岗位薪资高、缺口大&#xff0c;主要负责将大模型接入企业业务。非科班、文科生均可通过补Python入门。该岗位是AI时代的核心红利&#xff0c;前景广阔&#xff0c;适合各专业背景人士入行。 为什么大模型开发工程师这个岗位&#xff0c;这么火爆&#xff1f; …

作者头像 李华