Decode XORed Array

easy array bit manipulation

Problem

An array arr of n non-negative integers was encoded into an array encoded of length n−1, where encoded[i] = arr[i] XOR arr[i+1]. You are also given the first element first = arr[0]. Reconstruct and return the original array arr.

Inputencoded = [1, 2, 3], first = 1
Output[1, 0, 2, 1]
arr[0]=1; arr[1]=1^1=0; arr[2]=0^2=2; arr[3]=2^3=1. Check: 1^0=1, 0^2=2, 2^1=3 match encoded.

def decode(encoded, first):
    arr = [first]
    for e in encoded:
        arr.append(arr[-1] ^ e)
    return arr
function decode(encoded, first) {
  const arr = [first];
  for (let i = 0; i < encoded.length; i++) {
    arr.push(arr[i] ^ encoded[i]);
  }
  return arr;
}
class Solution {
    public int[] decode(int[] encoded, int first) {
        int[] arr = new int[encoded.length + 1];
        arr[0] = first;
        for (int i = 0; i < encoded.length; i++) {
            arr[i + 1] = arr[i] ^ encoded[i];
        }
        return arr;
    }
}
vector<int> decode(vector<int>& encoded, int first) {
    vector<int> arr(encoded.size() + 1);
    arr[0] = first;
    for (int i = 0; i < (int)encoded.size(); i++) {
        arr[i + 1] = arr[i] ^ encoded[i];
    }
    return arr;
}
Time: O(n) Space: O(n)