Welcome to Subscribe On Youtube
Formatted question description: https://leetcode.ca/all/2317.html
2317. Maximum XOR After Operations
- Difficulty: Medium.
- Related Topics: Array, Math, Bit Manipulation.
- Similar Questions: Maximum XOR of Two Numbers in an Array.
Problem
You are given a 0-indexed integer array nums
. In one operation, select any non-negative integer x
and an index i
, then update nums[i]
to be equal to nums[i] AND (nums[i] XOR x)
.
Note that AND
is the bitwise AND operation and XOR
is the bitwise XOR operation.
Return the **maximum possible bitwise XOR of all elements of nums
after applying the operation any number of times**.
Example 1:
Input: nums = [3,2,4,6]
Output: 7
Explanation: Apply the operation with x = 4 and i = 3, num[3] = 6 AND (6 XOR 4) = 6 AND 2 = 2.
Now, nums = [3, 2, 4, 2] and the bitwise XOR of all the elements = 3 XOR 2 XOR 4 XOR 2 = 7.
It can be shown that 7 is the maximum possible bitwise XOR.
Note that other operations may be used to achieve a bitwise XOR of 7.
Example 2:
Input: nums = [1,2,3,9,2]
Output: 11
Explanation: Apply the operation zero times.
The bitwise XOR of all the elements = 1 XOR 2 XOR 3 XOR 9 XOR 2 = 11.
It can be shown that 11 is the maximum possible bitwise XOR.
Constraints:
-
1 <= nums.length <= 105
-
0 <= nums[i] <= 108
Solution (Java, C++, Python)
-
class Solution { public int maximumXOR(int[] nums) { int max = 0; for (int n : nums) { max |= n; } return max; } } ############ class Solution { public int maximumXOR(int[] nums) { int ans = 0; for (int x : nums) { ans |= x; } return ans; } }
-
class Solution: def maximumXOR(self, nums: List[int]) -> int: return reduce(or_, nums) ############ # 2317. Maximum XOR After Operations # https://leetcode.com/problems/maximum-xor-after-operations/ class Solution: def maximumXOR(self, nums: List[int]) -> int: res = 0 for x in nums: res |= x return res
-
class Solution { public: int maximumXOR(vector<int>& nums) { int ans = 0; for (int& x : nums) { ans |= x; } return ans; } };
-
func maximumXOR(nums []int) (ans int) { for _, x := range nums { ans |= x } return }
-
function maximumXOR(nums: number[]): number { let ans = 0; for (const x of nums) { ans |= x; } return ans; }
Explain:
nope.
Complexity:
- Time complexity : O(n).
- Space complexity : O(n).