Coding Interview PatternsDecode XORed Array
EasyBitwise Manipulation

Decode XORed Array

Explanation & Solution

Description

There is a hidden integer array arr that consists of n non-negative integers.

It was encoded into another integer array encoded of length n - 1, such that encoded[i] = arr[i] XOR arr[i + 1]. For example, if arr = [1,0,2,1], then encoded = [1,2,3].

You are given the encoded array. You are also given an integer first, that is the first element of arr, i.e. arr[0] == first.

Return the original array arr. It can be proved that the answer exists and is unique.

Input:encoded = [1,2,3], first = 1
0
1
1
2
2
3
Output:[1,0,2,1]
0
1
1
0
2
2
3
1

Explanation: If arr = [1,0,2,1], then first = 1 and encoded = [1 XOR 0, 0 XOR 2, 2 XOR 1] = [1,2,3].

Constraints

  • 2 <= n <= 10^4
  • encoded.length == n - 1
  • 0 <= encoded[i] <= 10^5
  • 0 <= first <= 10^5

Approach

Bitwise Manipulation pattern

Key Insight

  • XOR is its own inverse: if a ^ b = c, then a ^ c = b
  • Knowing any element and the encoded value between two elements lets us recover the next element
  • Time: O(n) | Space: O(n)

Solution Code