leetcode:2935. 找出强数对的最大异或值 II【最大异或值还是得看01Trie树啊!】

题目截图

在这里插入图片描述

题目分析

排序后,限定了x和y的相对位置
假设y > x,随着y的移动,必须要保证2x >= y
所以可以使用滑动窗口维护一堆满足条件的x
这些x的异或值记录在Trie树中即可

ac code

class Node:__slots__ = 'children', 'cnt'def __init__(self):self.children = [None, None]self.cnt = 0  # 子树大小class Trie:HIGH_BIT = 19def __init__(self):self.root = Node()# 添加 valdef insert(self, val: int) -> None:cur = self.rootfor i in range(Trie.HIGH_BIT, -1, -1):bit = (val >> i) & 1if cur.children[bit] is None:cur.children[bit] = Node()cur = cur.children[bit]cur.cnt += 1  # 维护子树大小return cur# 删除 val,但不删除节点# 要求 val 必须在 trie 中def remove(self, val: int) -> None:cur = self.rootfor i in range(Trie.HIGH_BIT, -1, -1):cur = cur.children[(val >> i) & 1]cur.cnt -= 1  # 维护子树大小return cur# 返回 val 与 trie 中一个元素的最大异或和# 要求 trie 中至少有一个元素def max_xor(self, val: int) -> int:cur = self.rootans = 0for i in range(Trie.HIGH_BIT, -1, -1):bit = (val >> i) & 1# 如果 cur.children[bit^1].cnt == 0,视作空节点if cur.children[bit ^ 1] and cur.children[bit ^ 1].cnt:ans |= 1 << ibit ^= 1cur = cur.children[bit]return ansclass Solution:def maximumStrongPairXor(self, nums: List[int]) -> int:nums.sort()t = Trie()ans = left = 0for y in nums:t.insert(y)# 只考虑nums[left] * 2 >= y,否则滑走while nums[left] * 2 < y:t.remove(nums[left])left += 1ans = max(ans, t.max_xor(y))return ans

01Trie树模版

class Node:__slots__ = 'children', 'cnt'def __init__(self):self.children = [None, None]self.cnt = 0  # 子树大小class Trie:HIGH_BIT = 19def __init__(self):self.root = Node()# 添加 valdef insert(self, val: int) -> None:cur = self.rootfor i in range(Trie.HIGH_BIT, -1, -1):bit = (val >> i) & 1if cur.children[bit] is None:cur.children[bit] = Node()cur = cur.children[bit]cur.cnt += 1  # 维护子树大小return cur# 删除 val,但不删除节点# 要求 val 必须在 trie 中def remove(self, val: int) -> None:cur = self.rootfor i in range(Trie.HIGH_BIT, -1, -1):cur = cur.children[(val >> i) & 1]cur.cnt -= 1  # 维护子树大小return cur# 返回 val 与 trie 中一个元素的最大异或和# 要求 trie 中至少有一个元素def max_xor(self, val: int) -> int:cur = self.rootans = 0for i in range(Trie.HIGH_BIT, -1, -1):bit = (val >> i) & 1# 如果 cur.children[bit^1].cnt == 0,视作空节点if cur.children[bit ^ 1] and cur.children[bit ^ 1].cnt:ans |= 1 << ibit ^= 1cur = cur.children[bit]return ans

细节

__slot__加速

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

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

相关文章

Pandas画图报错:ValueError: signal only works in main thread

Pandas画图报错&#xff1a;ValueError: signal only works in main thread 基于Django 解决方法 按如下方式运行服务器 python manage.py runserver --nothreading --noreload

SpringCloud Alibaba(上):注册中心-nacos、负载均衡-ribbon、远程调用-feign

Nacos 概念&#xff1a;Nacos是阿里巴巴推出的一款新开源项目&#xff0c;它是一个更易于构建云原生应用的动态服务发现、配置管理和服务管理平台。Nacos致力于帮助用户发现、配置和管理微服务&#xff0c;它提供了一组简单易用的特性集&#xff0c;包括动态服务发现、服务配置…

【Pytorch和深度学习】栏目导读

一、栏目说明 本栏目《pytorch实践》是为初学者入门深度学习准备的。本文是该栏目的导读部分&#xff0c;因为计划本栏目在明年完成&#xff0c;因此&#xff0c;导读部分&#xff0c;即本文也在持续更新中。 本栏目设计目标是将深度学习全面用pytorch实践一遍&#xff0c;由浅…

JavaScript数组

JavaScript中的数组是一种强大而灵活的数据结构&#xff0c;用于存储和操作一组值。本文将介绍如何创建和访问数组&#xff0c;以及JavaScript数组常用的方法&#xff0c;如push、pop、shift、unshift和slice等。 一、创建和访问数组 在JavaScript中&#xff0c;可以使用以下…

聊聊logback的DuplicateMessageFilter

序 本文主要研究一下logback的DuplicateMessageFilter TurboFilter ch/qos/logback/classic/turbo/TurboFilter.java public abstract class TurboFilter extends ContextAwareBase implements LifeCycle {private String name;boolean start false;/*** Make a decision …

上机实验四 图的最小生成树算法设计 西安石油大学数据结构

实验名称&#xff1a;图的最小生成树算法设计 &#xff08;1&#xff09;实验目的&#xff1a; 掌握最小生成树算法&#xff0c;利用kruskal算法求解最小生成树。 &#xff08;2&#xff09;主要内容&#xff1a; 利用kruskal算法求一个图的最小生成树&#xff0c;设计Krus…

Xilinx Artix7-100T低端FPGA解码MIPI视频,基于MIPI CSI-2 RX Subsystem架构实现,提供工程源码和技术支持

目录 1、前言免责声明 2、我这里已有的 MIPI 编解码方案3、本 MIPI CSI2 模块性能及其优缺点4、详细设计方案设计原理框图OV5640及其配置权电阻硬件方案MIPI CSI-2 RX SubsystemSensor Demosaic图像格式转换Gammer LUT伽马校正VDMA图像缓存AXI4-Stream toVideo OutHDMI输出 5、…

数据校验:Spring Validation

Spring Validation概述 在开发中&#xff0c;我们经常遇到参数校验的需求&#xff0c;比如用户注册的时候&#xff0c;要校验用户名不能为空、用户名长度不超过20个字符、手机号是合法的手机号格式等等。如果使用普通方式&#xff0c;我们会把校验的代码和真正的业务处理逻辑耦…

K8S篇之etcd数据备份与恢复

一、etcd备份与恢复 基本了解&#xff1a; 1、k8s 使用etcd数据库实时存储集群中的数据&#xff0c;安全起见&#xff0c;一定要备份。 2、备份只需要在一个节点上备份就可以了&#xff0c;每个节点上的数据是同步的&#xff1b;但是数据恢复是需要在每个节点上进行。 3、etcd…

系统韧性研究(4)| 系统韧性的技术分类

系统韧性技术是任何提高系统韧性的架构、设计或实现技术。这些技术&#xff08;例如缓解措施&#xff0c;如冗余、保障措施和网络安全对策&#xff09;或被动地抵御逆境或主动检测逆境&#xff0c;并对其做出反应&#xff0c;亦或者从它们造成的伤害中恢复过来。系统韧性技术是…

软件测试/测试开发丨探索标识符在编程中的重要性

点此获取更多相关资料 什么是标识符 在 Python 中&#xff0c;标识符是用来标识变量、函数、类、模块和其他对象的名称。需要注意的是&#xff0c;在定义标识符的时候&#xff0c;虽然很自由&#xff0c;但是也不能随心所欲&#xff0c;合法的标识符需要遵从一定的规范。 命…

ArcGIS实现矢量区域内所有要素的统计计算

1、任务需求&#xff1a;统计全球各国所有一级行政区相关属性的总和。 &#xff08;1&#xff09;有一个全球一级行政区的矢量图&#xff0c;包含以下属性&#xff08;洪灾相关属性 province.shp&#xff09; &#xff08;2&#xff09;需要按照国家来统计各个国家各属性的总值…

突然消失的桌面文件如何恢复?详细教程让你轻松解决问题!

桌面文件突然消失&#xff0c;对于很多人来说&#xff0c;可能是个令人头疼的问题。这些文件可能包含重要的信息&#xff0c;也可能是数日甚至数周的努力成果。那么&#xff0c;当这种情况发生时&#xff0c;我们如何恢复丢失的文件呢&#xff1f;本文将提供一些实用的建议。 1…

【ArcGIS Pro微课1000例】0031:las点云提取(根据范围裁剪点云)

本文讲解ArcGIS Pro3.0中,las点云数据的提取(根据范围裁剪点云)方法。 文章目录 一、加载数据二、工具介绍三、点云裁剪一、加载数据 打开ArcGIS Pro,新建地图,加载配套实验数据包中的0031.rar中的点云数据point.las与范围bound.shp,如下图所示: 二、工具介绍 名称:提…

table表格的某一行数据如何回填

目的&#xff1a;table表格的某一行数据的输入框按钮触发对话框&#xff0c;对话框选择的数据再回填到table表格的这一行中。 1.插槽中传递本行的index: v-slot"{ row, $index }" 2.点击事件或者change事件传递index: click"val > tpmClicked($index)"…

一张图搞懂什么是BCD8421编码

如图所示 BCD8421编码的意义是 用四位二进制数表达一位的十进制数 因此十进制下的0&#xff5e;9在BCD8421编码下与其二进制表达是一样的 而多位的十进制数 比如说“10” 则需要将它拆分成两个单独的数“1”和“0” 分别用BCD8421编码表示这两个数 十进制“1” -> 0001 十进…

JAVA基础7:数组

1.数组定义格式 1&#xff09;数组概述 一次性声明大量的用于存储数据的变量 要存储的数据通常都是同类型数据&#xff0c;比如&#xff1a;考试成绩 数组&#xff08;array)是一种用于存储多个相同类型数据的存储模型 2&#xff09;数组定义格式 格式一&#xff1a;数据类…

在虚拟环境中pip包不在虚拟环境里

这里写自定义目录标题 结合网上多个大佬的方法终于解决了. 首先修改自己虚拟环境目录下的site文件: vim /home/XXX/.conda/envs/XXX/lib/pythonXXX/site.py 把 USER_BASE 和 USER_SITE 改成虚拟环境目录. USER_BASE: ‘/home/XXX/.conda/envs/XXX’ (exists) USER_SITE: ‘/ho…

内衣洗衣机和手洗哪个干净?好用的内衣洗衣机推荐

在日常生活中&#xff0c;我们的衣服不可避免地会沾染上各种细菌、毛发和污渍&#xff0c;将它们与贴身衣物混合清洗&#xff0c;很容易发生交叉感染&#xff0c;而被感染后&#xff0c;贴身衣物也有可能导致我们人体引起皮肤病。这也是为什么大部分人都喜欢用手洗的原因&#…

c# 和 c++ 匿名互相传递参数

在C#和C之间进行匿名参数传递需要使用Interop服务。下面是一个示例&#xff0c;展示了如何在C#和C之间传递匿名参数&#xff1a; 在C#中&#xff1a; using System; using System.Runtime.InteropServices;// 定义C中的匿名函数签名 [UnmanagedFunctionPointer(CallingConven…