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).

All Problems

All Solutions