LeetCode 数组中两个数的最大异或值
题目链接:https://leetcode-cn.com/problems/maximum-xor-of-two-numbers-in-an-array/
题目大意:
略。
分析:
代码如下:
class Trie {
public:
int passed; // 记录经过这个节点的字符串数量
int ends; // 记录有多少个字符串以这个节点结尾
Trie* nxt[]; /** Initialize your data structure here. */
Trie() {
passed = ;
ends = ;
nxt[] = nxt[] = NULL;
} /** Inserts a word into the trie. */
void insert(string word) {
Trie* p = this;
for(int i = ; i < word.size(); ++i) {
int key = word[i] - ''; if(p->nxt[key] == NULL) {
p->nxt[key] = new Trie();
}
++p->passed;
p = p->nxt[key];
}
++p->ends;
} int solve(string word) {
int ret = ;
int mask = ( << ); Trie* p = this;
for(int i = ; i < word.size(); ++i) {
int key = word[i] - ''; if(p->nxt[!key] != NULL) {
ret |= mask;
key = !key;
}
mask >>= ;
p = p->nxt[key];
}
return ret;
}
}; class Solution {
public:
int findMaximumXOR(vector<int>& nums) {
Trie trie = Trie();
vector< string > bits;
int ans = -;
int N = nums.size(); for(int i = ; i < N; ++i) {
bits.push_back(bitset< >(nums[i]).to_string());
trie.insert(bits[i]);
} for(int i = ; i < N; ++i) {
ans = max(ans, trie.solve(bits[i]));
} return ans;
}
};
LeetCode 数组中两个数的最大异或值的更多相关文章
- LeetCode 421. 数组中两个数的最大异或值(Maximum XOR of Two Numbers in an Array) 71
421. 数组中两个数的最大异或值 421. Maximum XOR of Two Numbers in an Array 题目描述 给定一个非空数组,数组中元素为 a0, a1, a2, - , a ...
- Java实现 LeetCode 421 数组中两个数的最大异或值
421. 数组中两个数的最大异或值 给定一个非空数组,数组中元素为 a0, a1, a2, - , an-1,其中 0 ≤ ai < 231 . 找到 ai 和aj 最大的异或 (XOR) 运算 ...
- 421 Maximum XOR of Two Numbers in an Array 数组中两个数的最大异或值
给定一个非空数组,数组中元素为 a0, a1, a2, … , an-1,其中 0 ≤ ai < 231 .找到 ai 和aj 最大的异或 (XOR) 运算结果,其中0 ≤ i, j < ...
- [Swift]LeetCode421. 数组中两个数的最大异或值 | Maximum XOR of Two Numbers in an Array
Given a non-empty array of numbers, a0, a1, a2, … , an-1, where 0 ≤ ai < 231. Find the maximum re ...
- Leetcode 421.数组中两数的最大异或值
数组中两数的最大异或值 给定一个非空数组,数组中元素为 a0, a1, a2, … , an-1,其中 0 ≤ ai < 231 . 找到 ai 和aj 最大的异或 (XOR) 运算结果,其中0 ...
- leetcode-421-数组中两个数的最大异或值*(前缀树)
题目描述: 方法一: class Solution: def findMaximumXOR(self, nums: List[int]) -> int: root = TreeNode(-1) ...
- 2016网易实习生编程题:数组中两个数的和等于sum
题目 找出数组中两个数的和等于sum的这两个数 解题 这个题目做过很多次了,利用HashMap,key为 sum-A[i] value为 i 当 加入HashMap时候A[i] 已经存在map中,ge ...
- 在O(N)时间内求解 正数数组中 两个数相加的 最大值
一,问题描述 给定一个正数数组arr(即数组元素全是正数),找出该数组中,两个元素相加的最大值,其中被加数的下标大于加数的下标.由加法运算的可逆性,j >i 这个条件可以去掉. 即求出: max ...
- 一个数组中两个数的和为N,找出这两个数字的下标
分析,两个数字的和为N.那么这两个数字是否是唯一的呢?输出的下标是否是第一对出现的呢? 1,我们假设这两个数字是唯一的 和是唯一的,那么其中一个数字越大,另一个数字就越小.想到大小关系,我们就想到了排 ...
随机推荐
- jquery 操作select,checkbox,radio (整理)
在工作中经经常使用到select,checkbox,radio,今天有点空暇就整理一下,免得以后用的时候还要又一次找. 操作select下拉框 -- 获取值或选中项: 1, $("#sele ...
- PHP实现上传文件到服务器
<?php /**************************** *** 功能:上传文件到服务器 ****************************/ session_start() ...
- day65--mysql数据库--索引、慢日志、分页
---恢复内容开始--- 一.索引 (一)介绍: 数据库中专门用于帮助用户快速查找数据的一种数据结构.类似于字典中的目录,查找字典内容时可以根据目录查找到数据的存放位置吗,然后直接获取. (二)作用: ...
- VS code 生成html模板快捷键
第一步:在空html文档中输入 ! 第二步:按下tab键.
- setter getter 方法
MRC下setter.getter方法写法.重写dealloc方法 @interface People : NSObject @property (nonatomic,strong) NSString ...
- standard_key.kmp
[KeyRemap]keyVersion=2B33554467=[eraseeof]S36=[bof]B33554466=[pagedn]S35=[eof]B33554465=[pageup]B10= ...
- Swift--Unmanaged使用
Unmanaged使用 作者 Nate Cook 翻译者 Croath Liu 2015年4月13日 API 对于开发者来说不只是把功能点接口暴露出来而已,同时也传达给我们一些其他的信息 ...
- contos7安装jdk1.8和tomcat8
前言 oracle官网下载jdk需要登录,网上携带cookie的方法已经不可用,我自己把jdk下载后放到了自己的服务器上,有需要的可以直接下载. 下载地址 http://149.129.124.185 ...
- spark大数据快速分析第二章
1.驱动程序通过一个SparkContext对象来访问Spark,此对象代表对计算集群的一个连接.shell已经自动创建了一个SparkContext对象.利用SparkContext对象来创建一个R ...
- pycharm之black配置for python file(代码格式化工具)
一.介绍下black 源码;https://github.com/ambv/blackpei 二.具体步骤 第一步 安装black: 从命令行安装:例如Windows的cmd窗口,运行命令pip3 i ...