Welcome to Subscribe On Youtube
Formatted question description: https://leetcode.ca/all/2425.html
2425. Bitwise XOR of All Pairings
- Difficulty: Medium.
- Related Topics: .
- Similar Questions: .
Problem
You are given two 0-indexed arrays, nums1
and nums2
, consisting of non-negative integers. There exists another array, nums3
, which contains the bitwise XOR of all pairings of integers between nums1
and nums2
(every integer in nums1
is paired with every integer in nums2
exactly once).
Return** the bitwise XOR of all integers in **nums3
.
Example 1:
Input: nums1 = [2,1,3], nums2 = [10,2,5,0]
Output: 13
Explanation:
A possible nums3 array is [8,0,7,2,11,3,4,1,9,1,6,3].
The bitwise XOR of all these numbers is 13, so we return 13.
Example 2:
Input: nums1 = [1,2], nums2 = [3,4]
Output: 0
Explanation:
All possible pairs of bitwise XORs are nums1[0] ^ nums2[0], nums1[0] ^ nums2[1], nums1[1] ^ nums2[0],
and nums1[1] ^ nums2[1].
Thus, one possible nums3 array is [2,5,1,6].
2 ^ 5 ^ 1 ^ 6 = 0, so we return 0.
Constraints:
-
1 <= nums1.length, nums2.length <= 10^5
-
0 <= nums1[i], nums2[j] <= 10^9
Solution (Java, C++, Python)
-
class Solution { public int xorAllNums(int[] nums1, int[] nums2) { int ans = 0; if (nums2.length % 2 == 1) { for (int v : nums1) { ans ^= v; } } if (nums1.length % 2 == 1) { for (int v : nums2) { ans ^= v; } } return ans; } }
-
class Solution { public: int xorAllNums(vector<int>& nums1, vector<int>& nums2) { int ans = 0; if (nums2.size() % 2 == 1) { for (int v : nums1) { ans ^= v; } } if (nums1.size() % 2 == 1) { for (int v : nums2) { ans ^= v; } } return ans; } };
-
class Solution: def xorAllNums(self, nums1: List[int], nums2: List[int]) -> int: ans = 0 if len(nums2) & 1: for v in nums1: ans ^= v if len(nums1) & 1: for v in nums2: ans ^= v return ans
-
func xorAllNums(nums1 []int, nums2 []int) int { ans := 0 if len(nums2)%2 == 1 { for _, v := range nums1 { ans ^= v } } if len(nums1)%2 == 1 { for _, v := range nums2 { ans ^= v } } return ans }
-
function xorAllNums(nums1: number[], nums2: number[]): number { let ans = 0; if (nums2.length % 2 != 0) { ans ^= nums1.reduce((a, c) => a ^ c, 0); } if (nums1.length % 2 != 0) { ans ^= nums2.reduce((a, c) => a ^ c, 0); } return ans; }
Explain:
nope.
Complexity:
- Time complexity : O(n).
- Space complexity : O(n).