LeetCode 1835. Find XOR Sum of All Pairs Bitwise AND Solution in Java, C++, Python & More | Explanation + Code

CoderIndeed
0
1835. Find XOR Sum of All Pairs Bitwise AND

Description

The XOR sum of a list is the bitwise XOR of all its elements. If the list only contains one element, then its XOR sum will be equal to this element.

  • For example, the XOR sum of [1,2,3,4] is equal to 1 XOR 2 XOR 3 XOR 4 = 4, and the XOR sum of [3] is equal to 3.

You are given two 0-indexed arrays arr1 and arr2 that consist only of non-negative integers.

Consider the list containing the result of arr1[i] AND arr2[j] (bitwise AND) for every (i, j) pair where 0 <= i < arr1.length and 0 <= j < arr2.length.

Return the XOR sum of the aforementioned list.

 

Example 1:

Input: arr1 = [1,2,3], arr2 = [6,5]
Output: 0
Explanation: The list = [1 AND 6, 1 AND 5, 2 AND 6, 2 AND 5, 3 AND 6, 3 AND 5] = [0,1,2,0,2,1].
The XOR sum = 0 XOR 1 XOR 2 XOR 0 XOR 2 XOR 1 = 0.

Example 2:

Input: arr1 = [12], arr2 = [4]
Output: 4
Explanation: The list = [12 AND 4] = [4]. The XOR sum = 4.

 

Constraints:

  • 1 <= arr1.length, arr2.length <= 105
  • 0 <= arr1[i], arr2[j] <= 109

Solutions

Solution 1: Bitwise Operation

Assume that the elements of array arr1 are a1, a2, ..., an, and the elements of array arr2 are b1, b2, ..., bm. Then, the answer to the problem is:

\begin{aligned} ans &= (a1 \wedge b1) \oplus (a1 \wedge b2) ... (a1 \wedge bm) \ &\quad \oplus (a2 \wedge b1) \oplus (a2 \wedge b2) ... (a2 \wedge bm) \ &\quad \oplus … \ &\quad \oplus (an \wedge b1) \oplus (an \wedge b2) ... (an \wedge bm) \ \end{aligned}

Since in Boolean algebra, the XOR operation is addition without carry, and the AND operation is multiplication, the above formula can be simplified as:

ans = (a1 \oplus a2 \oplus … \oplus an) \wedge (b1 \oplus b2 \oplus … \oplus bm)

That is, the bitwise AND of the XOR sum of array arr1 and the XOR sum of array arr2.

The time complexity is O(n + m), where n and m are the lengths of arrays arr1 and arr2, respectively. The space complexity is O(1).

PythonJavaC++GoTypeScript
class Solution: def getXORSum(self, arr1: List[int], arr2: List[int]) -> int: a = reduce(xor, arr1) b = reduce(xor, arr2) return a & b(code-box)

Post a Comment

0Comments

Post a Comment (0)

#buttons=(Accept !) #days=(20)

Our website uses cookies to enhance your experience. Check Now
Accept !