当前位置: 首页 > 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
}

相关文章:

  • 北京网站建设多少钱?
  • 辽宁网页制作哪家好_网站建设
  • 高端品牌网站建设_汉中网站制作
  • MySql主从复制原理
  • docker 升级步骤
  • C++ prime plus-7-編程練習
  • VMware虚拟机因磁盘空间不足黑屏无法登录
  • matlab绘制二维云图,划分区域,并显示每个区域的均值
  • KVM环境下制作ubuntu qcow2格式镜像
  • 基于SpringBoot的漫画网设计与实现
  • 人工智能快速发展下的极端风险管理
  • 力扣中等 33.搜索旋转排序数组
  • C语言 | Leetcode C语言题解之第415题字符串相加
  • proteus仿真学习(1)
  • 机器人的动力学——牛顿欧拉,拉格朗日,凯恩
  • ARM/Linux嵌入式面经(三八):绿盟科技
  • 【webpack4系列】webpack构建速度和体积优化策略(五)
  • 谈谈黑盒测试方法
  • @angular/forms 源码解析之双向绑定
  • [case10]使用RSQL实现端到端的动态查询
  • [译] 怎样写一个基础的编译器
  • github从入门到放弃(1)
  • js数组之filter
  • Laravel 菜鸟晋级之路
  • mac修复ab及siege安装
  • Odoo domain写法及运用
  • PHP 使用 Swoole - TaskWorker 实现异步操作 Mysql
  • PHP的Ev教程三(Periodic watcher)
  • SpiderData 2019年2月23日 DApp数据排行榜
  • V4L2视频输入框架概述
  • VirtualBox 安装过程中出现 Running VMs found 错误的解决过程
  • 编写符合Python风格的对象
  • 浮动相关
  • 官方新出的 Kotlin 扩展库 KTX,到底帮你干了什么?
  • 基于HAProxy的高性能缓存服务器nuster
  • 开年巨制!千人千面回放技术让你“看到”Flutter用户侧问题
  • 入手阿里云新服务器的部署NODE
  • 网页视频流m3u8/ts视频下载
  • 小程序上传图片到七牛云(支持多张上传,预览,删除)
  • 以太坊客户端Geth命令参数详解
  • scrapy中间件源码分析及常用中间件大全
  • ​ArcGIS Pro 如何批量删除字段
  • ​软考-高级-系统架构设计师教程(清华第2版)【第20章 系统架构设计师论文写作要点(P717~728)-思维导图】​
  • ​云纳万物 · 数皆有言|2021 七牛云战略发布会启幕,邀您赴约
  • # centos7下FFmpeg环境部署记录
  • #pragma once与条件编译
  • #pragma pack(1)
  • #window11设置系统变量#
  • #每日一题合集#牛客JZ23-JZ33
  • $L^p$ 调和函数恒为零
  • (2/2) 为了理解 UWP 的启动流程,我从零开始创建了一个 UWP 程序
  • (23)Linux的软硬连接
  • (办公)springboot配置aop处理请求.
  • (二十一)devops持续集成开发——使用jenkins的Docker Pipeline插件完成docker项目的pipeline流水线发布
  • (三十)Flask之wtforms库【剖析源码上篇】
  • (太强大了) - Linux 性能监控、测试、优化工具
  • (转)C语言家族扩展收藏 (转)C语言家族扩展
  • (转)visual stdio 书签功能介绍