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

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

题目:

题解:

const highBit = 30type trie struct {left, right *trie
}func (t *trie) add(num int) {cur := tfor i := highBit; i >= 0; i-- {bit := num >> i & 1if bit == 0 {if cur.left == nil {cur.left = &trie{}}cur = cur.left} else {if cur.right == nil {cur.right = &trie{}}cur = cur.right}}
}func (t *trie) check(num int) (x int) {cur := tfor i := highBit; i >= 0; i-- {bit := num >> i & 1if bit == 0 {// a_i 的第 k 个二进制位为 0,应当往表示 1 的子节点 right 走if cur.right != nil {cur = cur.rightx = x*2 + 1} else {cur = cur.leftx = x * 2}} else {// a_i 的第 k 个二进制位为 1,应当往表示 0 的子节点 left 走if cur.left != nil {cur = cur.leftx = x*2 + 1} else {cur = cur.rightx = x * 2}}}return
}func findMaximumXOR(nums []int) (x int) {root := &trie{}for i := 1; i < len(nums); i++ {// 将 nums[i-1] 放入字典树,此时 nums[0 .. i-1] 都在字典树中root.add(nums[i-1])// 将 nums[i] 看作 ai,找出最大的 x 更新答案x = max(x, root.check(nums[i]))}return
}func max(a, b int) int {if a > b {return a}return b
}
http://www.lryc.cn/news/443621.html

相关文章:

  • 每天一道面试题(15):谈谈你对CAS的理解
  • 如何将MySQL卸载干净(win11)
  • 【Linux】简易日志系统
  • yum 集中式安装 LNMP
  • 淘宝扭蛋机小程序,扭蛋机文化下的新体验
  • Go搭建TcpSocket服务器
  • hadoop3跑第一个例子wordcount
  • Maven笔记(二):进阶使用
  • Apache ZooKeeper 及 Curator 使用总结
  • 深入探索:MATLAB中的硬件支持包(HSP)及其应用
  • 5.内容创作的未来:ChatGPT如何辅助写作(5/10)
  • Day26_0.1基础学习MATLAB学习小技巧总结(26)——数据插值
  • SQL进阶技巧:火车票相邻座位预定一起可能情况查询算法 ?
  • 神经网络构建原理(以MINIST为例)
  • 【ArcGIS微课1000例】0123:数据库中要素类批量转为shapefile
  • 【Elasticsearch系列十九】评分机制详解
  • 神经网络通俗理解学习笔记(3)注意力神经网络
  • 【C#】 EventWaitHandle的用法
  • 设计模式之结构型模式例题
  • camtasia2024绿色免费安装包win+mac下载含2024最新激活密钥
  • 如何导入一个Vue并成功运行
  • 封装svg图片
  • tomcat的Catalinalog和localhostlog乱码
  • 行人持刀检测数据集 voc yolo
  • 基于51单片机的汽车倒车防撞报警器系统
  • NLP 文本匹配任务核心梳理
  • FastAPI 的隐藏宝石:自动生成 TypeScript 客户端
  • 了解云容器实例云容器实例(Cloud Container Instance)
  • OpenStack Yoga版安装笔记(十三)neutron安装
  • [系列]参数估计与贝叶斯推断