本文主要是介绍OJ练习第185题——数组中两个数的最大异或值,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
数组中两个数的最大异或值
力扣链接:421. 数组中两个数的最大异或值
题目描述
给你一个整数数组 nums ,返回 nums[i] XOR nums[j] 的最大运算结果,其中 0 ≤ i ≤ j < n 。
示例
官解思路
异或运算性质:
class Solution {static final int HIGH_BIT = 30;public int findMaximumXOR(int[] nums) {int x = 0;for(int k = HIGH_BIT; k >= 0; k--) {Set<Integer> seen = new HashSet<Integer>();for(int num : nums) {seen.add(num >> k);}int xNext = x * 2 + 1;boolean found = false;for(int num : nums) {if(seen.contains(xNext ^ (num >> k))) {found = true;break;}}if(found) {x = xNext;}else {x = xNext - 1;}}return x;}
}
这篇关于OJ练习第185题——数组中两个数的最大异或值的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!