421. 数组中两个数的最大异或值/字典树【leetcode】

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

给你一个整数数组 nums ,返回 nums[i] XOR nums[j] 的最大运算结果,其中 0 ≤ i ≤ j < n 。

示例 1:
输入:nums = [3,10,5,25,2,8]
输出:28
解释:最大运算结果是 5 XOR 25 = 28.

示例 2:
输入:nums = [14,70,53,83,49,91,36,80,92,51,66,70]
输出:127

提示:
1 <= nums.length <= 2 * 105
0 <= nums[i] <= 2的31次方 - 1

字典树

思路:可以将每个数变成最高31位的二进制数,建立字典树,为使异或值最大,应该尽可能找不一样的,如果该位为0先找1,该位为1先找0

class Solution {
public://记录某个id下下个数为0或者1的idint a[200005*31][2];//记录某个id代表的十进制数 是唯一的int cnt[200005*31];//按顺序赋予id,代表树的一个节点int id=0;int findMaximumXOR(vector<int>& nums) {for(int i=0;i<nums.size();i++){insert(nums[i]);}int res=0;for(int i=0;i<nums.size();i++){res = max(res,find(nums[i]));}return res;}//建树void insert(int b){int p=0;for(int i=30;i>=0;i--){int x=(b>>i)&1;//获得第i位的值if(a[p][x]==0) a[p][x]=++id;//新建节点p=a[p][x];}cnt[p]=b;//记录该节点的十进制数}//找树中和b异或的最大值int find(int b){int p=0;int big=0;for(int i=30;i>=0;i--){int x=(b>>i)&1;if(x==1){if(a[p][0]!=0) p=a[p][0];else if(a[p][1]!=0) p=a[p][1];}if(x==0){if(a[p][1]!=0) p=a[p][1];else if(a[p][0]!=0) p=a[p][0];}}big=max(big,b^cnt[p]);return big;}
};

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/141289.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

基于YOLOv8的输电线路异物识别算法应用

基于 YOLOv8 的输电线路异物识别算法应用 输电线路作为电力系统的重要一环&#xff0c;保证其安全稳定运行是十分必要的。由于长期暴露于室外&#xff0c;线路所面临的不安全因素繁多&#xff0c;异物入侵便是其中之一。异物可能会引起线路短路甚至诱发火灾&#xff0c;因此要加…

react及相关面试问题汇总

目录 1、什么是React&#xff1f;它的特点是什么&#xff1f; 2、解释一下虚拟DOM(Virtual DOM)的概念以及它的工作原理。 3、什么是组件(Component)&#xff1f;如何定义一个React组件&#xff1f; 4、什么是JSX&#xff1f;它与HTML的区别是什么&#xff1f;如何在React中…

Unity中雾效的实现方法二

文章目录 前言一、声明雾效所需要的内置变体二、在 v2f 中声明顶点传入片段中的雾效插值器三、 在顶点着色器中计算雾效采样四、在片元着色器中进行雾效颜色混合在这里插入图片描述 五、最终效果 前言 Unity中雾效的实现方法二&#xff0c;使用 Unity 自带的方法实现&#xff…

如何将系统盘MBR转GPT?无损教程分享!

什么是MBR和GPT&#xff1f; MBR和GPT是磁盘的两种分区形式&#xff1a;MBR&#xff08;主引导记录&#xff09;和GPT&#xff08;GUID分区表&#xff09;。 新硬盘不能直接用来保存数据。使用前应将其初始化为MBR或GPT分区形式。但是&#xff0c;如果您在MBR时需…

torch.norm求范数

pytorch在数学计算上下足了功夫&#xff0c;在支持海量数学公式的同时还将速度优化到超过大部分用户DIY的水平。所以&#xff0c;pytorch中的每个常见的数学计算函数都需要我们有一定了解。 今天介绍的是torch.norm&#xff0c;一个pytorch用来求范数的函数。我们先看求范数的数…

基于FPGA的EMAC模块与FIFO模块:高速数据传输与存储

基于FPGA的EMAC模块与FIFO模块&#xff1a;高速数据传输与存储 在现代社会&#xff0c;高速数据传输和存储是信息技术领域的关键问题之一。而基于FPGA的EMAC模块与FIFO模块则成为了解决这些问题的重要途径。本文将介绍这两个模块的原理、实现方法以及如何在FPGA中应用它们。 …

关于我在配置zookeeper出现,启动成功,进程存在,但是查看状态却没有出现Mode:xxxxx的问题和我的解决方案

在我输入:zkServer.sh status 之后出现报错码. 报错码&#xff1a; ZooKeeper JMX enabled by default Using config: /opt/software/zookeeper/bin/../conf/zoo.cfgClient port found: 2181. Client address: localhost. Error contacting service. It is probably not runni…

基于SpringBoot的SSMP整合案例(开启日志与分页查询条件查询功能实现)

开启事务 导入Mybatis-Plus框架后&#xff0c;我们可以使用Mybatis-Plus自带的事务&#xff0c;只需要在配置文件中配置即可 使用配置方式开启日志&#xff0c;设置日志输出方式为标准输出mybatis-plus:global-config:db-config:table-prefix: tb_id-type: autoconfiguration:…

【自动化测试】Pytest框架 —— 跳过测试和失败重试

1、Pytest跳过测试用例 自动化测试执行过程中&#xff0c;我们常常出现这种情况&#xff1a;因为功能阻塞&#xff0c;未实现或者环境有问题等等原因&#xff0c;一些用例执行不了&#xff0c; 如果我们注释掉或删除掉这些测试用例&#xff0c;后面可能还要进行恢复操作&#…

ObRegisterCallbacks()返回0xC0000022(拒绝访问)解决办法

在开发测试环境下&#xff0c;没有打签名的驱动调用ObRegisterCallbacks会返回0xC0000022&#xff08;拒绝访问&#xff09;的错误码。这是由于该函数内部会进行驱动的签名校验。 具体位置在 因此可以用以下代码绕过该检查 // 以下代码放在DriverEntry中 ULONG_PTR pDrvSectio…

【手动创建UIWindow Objective-C语言】

一、上节课,我们讲了控制器View的懒加载: 1.什么时候会调用这个懒加载呢,用我们直接,控制器self.view self.view的时候: 什么时候,调用它这个self.view, 就要去加载控制器的view, self.view 加载控制器的view 我们给大家演示过了,这个大家已经清楚了,我们给大家说…

vb.net圣经带快捷键,用原装的数据库

Imports System.Data.SqlServerCe Imports System.Text.RegularExpressions Imports System.Data.OleDbPublic Class Form1Dim jiuyue As String() {"创", "出", "利", "民", "申", "书", "士", "…

vue3使用粒子特效

安装 //使用npm安装 npm install particles.vue3 --save//使用yarn安装 yarn add particles.vue3 --save//必须得装 npm i tsparticles 使用 main.js import Particles from particles.vue3 const app createApp(App) app.use(Particles)//使用粒子特效 页面使用 <sc…

VScode配置C/C++环境

文章目录 一、下载MinGW二、配置环境变量三、VScode配置四、验证 一、下载MinGW MinGW官网 划到最下面找 二、配置环境变量 解压后放到自己想放的目录下 右键 此电脑–>属性–>高级系统设置—>环境变量–> 在cmd命令行检测&#xff0c;出现如下界面&#xff1a;…

小程序day05

使用npm包 Vant Weapp 类似于前端boostrap和element ui那些的样式框架。 安装过程 注意:这里建议直接去看官网的安装过程。 vant-weapp版本最好也不要指定 在项目目录里面先输入npm init -y 初始化一个包管理配置文件: package.json 使用css变量定制vant主题样式&#xff0…

纯手写 模态框、消息弹框、呼吸灯

在有些做某些网页中&#xff0c;应用不想引用一些前端框架&#xff0c;对于一些比较常用的插件可以纯手写实现 1、模态框 <!DOCTYPE html> <html> <head> <meta charset"UTF-8"> <title>Water Ripple Effect</title> <style…

easyExcel使用场景

在项目开发中往往需要使用到数据的导入和导出&#xff0c;导入就是从Excel中导入到DB中&#xff0c;而导出就是从DB中查询数据然后使用POI写到Excel上。 大数据的导入和导出&#xff0c;相信大家在日常的开发、面试中都会遇到。 很多问题只要这一次解决了&#xff0c;总给复盘记…

MySQL如何查找删除重复行?

如何查找重复行 第一步是定义什么样的行才是重复行。多数情况下很简单&#xff1a;它们某几列具有相同的值。本例采用这种定义&#xff0c;或许你对“重复”的定义得很复杂&#xff0c;你需要对sql做些修改。本例要用到的数据样本&#xff1a; create table test(id int not …

mmap如何运用

mmap是什么 mmap是C语言中的一个系统调用&#xff0c;它允许程序将一个文件或者其他的对象映射到进程的地址空间。这种机制使得进程可以直接读取和修改被映射的对象&#xff0c;而不需要通过I/O系统调用来访问。 mmap的主要用途包括&#xff1a; * 将一个普通文件映射到内存中…

解析JSON字符串:属性值为null的时候不被序列化

如果希望属性值为null及不序列化&#xff0c;只序列化不为null的值。 1、测试代码 配置代码&#xff1a; mapper.setSerializationInclusion(JsonInclude.Include.NON_NULL); 或者通过注解JsonInclude(JsonInclude.Include.NON_NULL) //常见问题2&#xff1a;属性为null&a…