Find The Original Array of Prefix XOR

medium array bit manipulation

Problem

Given pref where pref[i] = arr[0] ^ arr[1] ^ ... ^ arr[i], recover arr.

Inputpref = [5, 2, 0, 3, 1]
Output[5, 7, 2, 3, 2]
arr[0]=5; arr[i]=pref[i]^pref[i-1].

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