Back to Leetcode Go

1720. Decode XORed Array

website/content.en/ChapterFour/1700~1799/1720.Decode-XORed-Array.md

1.7.971.8 KB
Original Source

1720. Decode XORed Array

Problem

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

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

Example 1:

Input: encoded = [1,2,3], first = 1
Output: [1,0,2,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]

Example 2:

Input: encoded = [6,2,7,3], first = 4
Output: [4,2,0,7,4]

Constraints:

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

Problem Summary

The unknown integer array arr consists of n non-negative integers. After being encoded, it becomes another integer array encoded of length n - 1, where encoded[i] = arr[i] XOR arr[i + 1]. For example, arr = [1,0,2,1] is encoded as encoded = [1,2,3]. You are given the encoded array encoded and the first element first of the original array arr (arr[0]). Please decode and return the original array arr. It can be proved that the answer exists and is unique.

Solution Approach

  • Simple problem. According to the problem statement, return the original decoded array by sequentially applying the XOR operation to adjacent elements of the encoded array.

Code

go
package leetcode

func decode(encoded []int, first int) []int {
	arr := make([]int, len(encoded)+1)
	arr[0] = first
	for i, val := range encoded {
		arr[i+1] = arr[i] ^ val
	}
	return arr
}