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

Python | Leetcode Python题解之第421题数组中两个数的最大异或值

题目:

题解:

class Trie:def __init__(self):# 左子树指向表示 0 的子节点self.left = None# 右子树指向表示 1 的子节点self.right = Noneclass Solution:def findMaximumXOR(self, nums: List[int]) -> int:# 字典树的根节点root = Trie()# 最高位的二进制位编号为 30HIGH_BIT = 30def add(num: int):cur = rootfor k in range(HIGH_BIT, -1, -1):bit = (num >> k) & 1if bit == 0:if not cur.left:cur.left = Trie()cur = cur.leftelse:if not cur.right:cur.right = Trie()cur = cur.rightdef check(num: int) -> int:cur = rootx = 0for k in range(HIGH_BIT, -1, -1):bit = (num >> k) & 1if bit == 0:# a_i 的第 k 个二进制位为 0,应当往表示 1 的子节点 right 走if cur.right:cur = cur.rightx = x * 2 + 1else:cur = cur.leftx = x * 2else:# a_i 的第 k 个二进制位为 1,应当往表示 0 的子节点 left 走if cur.left:cur = cur.leftx = x * 2 + 1else:cur = cur.rightx = x * 2return xn = len(nums)x = 0for i in range(1, n):# 将 nums[i-1] 放入字典树,此时 nums[0 .. i-1] 都在字典树中add(nums[i - 1])# 将 nums[i] 看作 ai,找出最大的 x 更新答案x = max(x, check(nums[i]))return x
http://www.lryc.cn/news/444595.html

相关文章:

  • 如何将普通Tokenizer变成Fast Tokenizer
  • 联合复现!考虑最优弃能率的风光火储联合系统分层优化经济调度!
  • Vue开发前端图片上传给java后端
  • react hooks--useCallback
  • 828华为云征文|华为云Flexus X实例docker部署最新Appsmith社区版,搭建自己的低代码平台
  • webservice cxf框架 jaxrs jaxws spring整合 接口测试方法 wsdl报文详解 springboot整合 拦截器 复杂参数类型
  • 2024AI做PPT软件如何重塑演示文稿的创作
  • 谷神后端list转map
  • Java集合(Map篇)
  • VUE3配置路由(超级详细)
  • 【笔记】机器学习算法在异常网络流量监测中的应用
  • 江协科技STM32学习- P15 TIM输出比较
  • 使用python-pptx批量删除备注:清除PPT文档中的所有备注信息
  • RTX NVIDIA 3090卡配置对应pytorch,CUDA版本,NVIDIA驱动过程及问题整理
  • 【Verilog学习日常】—牛客网刷题—Verilog快速入门—VL21
  • 【深度】为GPT-5而生的「草莓」模型!从快思考—慢思考到Self-play RL的强化学习框架
  • 【编程底层原理】Java常用读写锁的使用和原理
  • 自恢复保险丝SMD1206B005TF在电路中起什么作用
  • 2024年躺平,花大半年的时间,就弄了这一件事儿:《C++面试真题宝典》
  • PHP基础语法讲解
  • 【论文速看】DL最新进展20240923-长尾综述、人脸防伪、图像分割
  • device靶机详解
  • 十四、SOA(在企业中的应用场景)
  • 单片机与PIC的区别:多方面对比
  • python新手的五个练习题
  • Go语言并发编程之sync包详解
  • 函数题 6-10 阶乘计算升级版【PAT】
  • java项目之基于springboot的医院资源管理系统源码
  • Docker命令全解析:掌握容器化技术的基石
  • 2024.9.19