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

【Leetcode 每日一题 - 扩展】421. 数组中两个数的最大异或值

问题背景

给你一个整数数组 n u m s nums nums,返回 n u m s [ i ] X O R n u m s [ j ] nums[i]\ XOR\ nums[j] nums[i] XOR nums[j] 的最大运算结果,其中 0 ≤ i ≤ j < n 0 ≤ i ≤ j < n 0ij<n

数据约束

  • 1 ≤ n u m s . l e n g t h ≤ 2 × 1 0 5 1 \le nums.length \le 2 \times 10 ^ 5 1nums.length2×105
  • 0 ≤ n u m s [ i ] ≤ 2 31 − 1 0 \le nums[i] \le 2 ^ {31} - 1 0nums[i]2311

解题过程

终于出现每日一题抄都抄不明白的情况了,今天的题需要改进 0 − 1 0 - 1 01背包之后将数组处理成前后缀,然后再解决两个数组中的最大异或值问题。
自己目前动态规划掌握地并不好,不强求。
不过其中涉及到的这个最大异或值是可以学着写写,积累一下的。

主要的思路是从高到低枚举数组中数字的每一位,依次判断这一位上有没有可能异或得到 1 1 1,计算出所需的另一个因子,判断它在数组中是否存在即可。
这里的判断,有点像 两数之和,可以用哈希表来实现。

具体实现

class Solution {public int findMaximumXOR(int[] nums) {// 标准流程,计算数组中数字可能的最大有效长度int max = 0;for (int num : nums) {max = Math.max(max, num);}int n = 31 - Integer.numberOfLeadingZeros(max);// 定义一个掩码变量,方便在过程中处理某一位上的问题int res = 0, mask = 0;Set<Integer> set = new HashSet<>();// 这里下标 i 需要倒序变化,因为某一位上为 1 是需要通过左移来实现的for (int i = n; i >= 0; i--) {set.clear();mask |= 1 << i;// nextRes 表示下一个可能的较大的结果int nextRes = res | (1 << i);for (int num : nums) {// 这一位之后的所有位上置零num &= mask;// 如果对应的因子在集合中存在,就更新结果if (set.contains(nextRes ^ num)) {res = nextRes;break;}set.add(num);}}return res;}
}
http://www.lryc.cn/news/523014.html

相关文章:

  • 计算机网络 | IP地址、子网掩码、网络地址、主机地址计算方式详解
  • C#如何调用执行命令行窗口(CMD)
  • vim练级攻略(精简版)
  • 一文速通Java的JDBC编程
  • laravel中请求失败重试的扩展--Guzzle
  • 如何在vue中渲染markdown内容?
  • Mysql MVCC
  • Spring6.0新特性-HTTP接口:使用@HttpExchange实现更优雅的Http客户端
  • springboot医院信管系统
  • 迅为RK3568开发板篇OpenHarmony实操HDF驱动控制LED-编写内核 LED HDF 驱动程序
  • [javaWeb]初识Web
  • 复健第二天之[MoeCTF 2022]baby_file
  • uniapp 微信小程序 editor 富文本编辑器
  • SparkSQL函数
  • 从零开始学数据库 day2 DML
  • 电脑换固态硬盘
  • 【大数据】机器学习------支持向量机(SVM)
  • Android系统开发(八):从麦克风到扬声器,音频HAL框架的奇妙之旅
  • Golang Gin系列-2:搭建Gin 框架环境
  • FGC_grasp复现
  • 实力认证 | 海云安入选《信创安全产品及服务购买决策参考》
  • Avalonia系列文章之小试牛刀
  • 中国数字安全产业年度报告(2024)
  • LabVIEW桥接传感器配置与数据采集
  • 简明docker快速入门并实践方法
  • 《MambaIR:一种基于状态空间模型的简单图像修复基线方法》学习笔记
  • 链式前向星的写法
  • 【逆境中绽放:万字回顾2024我在挑战中突破自我】
  • 尺取法(算法优化技巧)
  • 基于 K-Means 聚类分析实现人脸照片的快速分类