2021 02 03 1720 解碼異或後的陣列

2021-10-18 19:42:08 字數 1215 閱讀 7678

1720. 解碼異或後的陣列

未知 整數陣列 arr 由 n 個非負整數組成。

經編碼後變為長度為 n - 1 的另乙個整數陣列 encoded ,其中 encoded[i] = arr[i] xor arr[i + 1] 。例如,arr = [1,0,2,1] 經編碼後得到 encoded = [1,2,3] 。

給你編碼後的陣列 encoded 和原陣列 arr 的第乙個元素 first(arr[0])。

請解碼返回原陣列 arr 。可以證明答案存在並且是唯一的。

示例 1:

輸入:encoded = [1,2,3], first = 1

輸出:[1,0,2,1]

解釋:若 arr = [1,0,2,1] ,那麼 first = 1 且 encoded = [1 xor 0, 0 xor 2, 2 xor 1] = [1,2,3]

示例 2:

輸入:encoded = [6,2,7,3], first = 4

輸出:[4,2,0,7,4]

2 <= n <= 104

encoded.length == n - 1

0 <= encoded[i] <= 105

0 <= first <= 105

演算法:1、交換律

2、結合律(即(a^b)^c == a^(b^c))

3、對於任何數x,都有x^x=0,x^0=x

4、自反性 a xor b xor b = a xor 0 = a

a ^ b = c

a ^ b ^ b = c ^ b 或者a ^ b ^ a = a ^ c

a = c ^ b、b = a ^ c

具體:encoded[i] = arr[i] xor arr[i + 1]

en[i] = arr[i] ^ arr[i+1]

en[i] ^ arr[i] = arr[i] ^ arr[i+1] ^ arr[i]

en[i] ^ arr[i] = arr[i+1]

i = 0,

arr[0] = first,

arr[1] = en[0] ^ first

public int decode(int encoded, int first) 

return arr;

}

執行結果:

通過顯示詳情

執行用時:2 ms

記憶體消耗:39.5 mb

1720 解碼異或後的陣列

題目描述 未知 整數陣列 arr 由 n 個非負整數組成。經編碼後變為長度為 n 1 的另乙個整數陣列 encoded 其中 encoded i arr i xor arr i 1 例如,arr 1,0,2,1 經編碼後得到 encoded 1,2,3 給你編碼後的陣列 encoded 和原陣列 a...

1734 解碼異或後的排列

題目描述 給你乙個整數陣列 perm 它是前 n 個正整數的排列,且 n 是個 奇數 它被加密成另乙個長度為 n 1 的整數陣列 encoded 滿足 encoded i perm i xor perm i 1 比方說,如果 perm 1,3,2 那麼 encoded 2,1 給你 encoded ...

1734 解碼異或後的排列

1734.解碼異或後的排列 注意審題,注意審題,注意審題。難度中等 給你乙個整數陣列perm,它是前n個正整數的排列,且n是個 奇數 它被加密成另乙個長度為n 1的整數陣列encoded,滿足encoded i perm i xor perm i 1 比方說,如果perm 1,3,2 那麼encod...