package LeetCode_421
/**
* 421. Maximum XOR of Two Numbers in an Array
* https://leetcode.com/problems/maximum-xor-of-two-numbers-in-an-array/description/
*
* Given an integer array nums, return the maximum result of nums[i] XOR nums[j], where 0 ≤ i ≤ j < n.
Follow up: Could you do this in O(n) runtime?
Example 1:
Input: nums = [3,10,5,25,2,8]
Output: 28
Explanation: The maximum result is 5 XOR 25 = 28.
Example 2:
Input: nums = [0]
Output: 0
Constraints:
1 <= nums.length <= 2 * 104
0 <= nums[i] <= 231 - 1
* */
class Solution {
/*
* solution 1: bruce force, Time complexity: O(n^2), Space complexity:O(1)
* */
fun findMaximumXOR(nums: IntArray): Int {
var max = Int.MIN_VALUE
for (i in nums.indices) {
for (j in i until nums.size) {
max = Math.max(nums[i] xor nums[j], max)
}
}
return max
}
}