Skip to content

1734. Decode XORed Permutation

Difficulty Topics

Description

There is an integer array perm that is a permutation of the first n positive integers, where n is always odd.

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

Given the encoded array, return the original array perm. It is guaranteed that the answer exists and is unique.

 

Example 1:

Input: encoded = [3,1]
Output: [1,2,3]
Explanation: If perm = [1,2,3], then encoded = [1 XOR 2,2 XOR 3] = [3,1]

Example 2:

Input: encoded = [6,5,4,6]
Output: [2,4,1,5,3]

 

Constraints:

  • 3 <= n < 105
  • n is odd.
  • encoded.length == n - 1

Solution

decode-xored-permutation.py
class Solution:
    def decode(self, encoded: List[int]) -> List[int]:
        curr = start = 0

        for i in range(1, len(encoded)+2):
            start ^= i

        for x in encoded:
            curr ^= x
            start ^= curr

        res = [start]
        for x in encoded:
            res.append(res[-1] ^ x)

        return res