博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
421. Maximum XOR of Two Numbers in an Array
阅读量:5160 次
发布时间:2019-06-13

本文共 1259 字,大约阅读时间需要 4 分钟。

Given a non-empty array of numbers, a0, a1, a2, … , an-1, where 0 ≤ ai < 231.

Find the maximum result of ai XOR aj, where 0 ≤ ij < n.

Could you do this in O(n) runtime?

Example:

Input: [3, 10, 5, 25, 2, 8]Output: 28Explanation: The maximum result is 5 ^ 25 = 28. 含义:给定一个非空数组,任意两个整数做异或操作,找到最大的异或值
1     public int findMaximumXOR(int[] nums) { 2         int max = 0, mask = 0; 3         // test each bit pose, 判断能不能构成所需要的值; 4         for(int i = 31; i >= 0; i --) { 5             // 每次都在之前的基础上更新mask 6             mask = mask | (1 << i); //用来累加获取每个数的前N位 7             Set
set = new HashSet<>(); 8 for(int num : nums) { 9 // add the number which has the mask as its prefix;10 set.add(num & mask);11 }12 // 假设当前所能达到的最大值是这个temp值;13 int tmp = max | (1 << i);//用来获取最大值的前N位14 for(Integer prefix : set) {15 // 利用了 ^ 的 prefix ^ tmp = c,则 prefix ^ c = temp16 if(set.contains(prefix ^ tmp)) {17 // 如果能组成就直接break18 max = tmp;19 break;20 }21 }22 }23 return max; 24 }

 

转载于:https://www.cnblogs.com/wzj4858/p/7728180.html

你可能感兴趣的文章
Swift - 将String类型的数字转换成数字类型(支持十进制、十六进制)
查看>>
学校简易管理系统(python面向对象无界面版)
查看>>
运动员喝饮料问题
查看>>
[IMX6]Android6.0移植和分析
查看>>
第一章 spring boot实例项目快速搭建
查看>>
巧用UserAgent来解决浏览器的各种问题
查看>>
Java 新手学习 CSS样式列表 排版 格式布局
查看>>
jQuery概述
查看>>
(ios实战)实现类似于android 的toast控件
查看>>
mysql传统主从、双主复制+keepalived配置步骤
查看>>
关于MarshalByRefObject的解释
查看>>
vue之路由传参
查看>>
基于jquery的页面分屏切换模板
查看>>
《经济学通识》七、医患关系,毒奶和产品质量
查看>>
验证码校验的前世今生及心得体会
查看>>
log4net 开启内部调试
查看>>
Java多线程学习笔记(二)
查看>>
地图源改变之后mxd文件打开很慢的问题
查看>>
51Nod - 1013 3的幂的和
查看>>
Leetcode 492. 构造矩形
查看>>