1. 問題描述:
未知整數陣列 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
2. 思路分析:
分析題目可以知道我們模擬整個過程即可,舉出幾個實際一點的例子可以發現a ^ b = c,已知其中的兩個數那麼就可以求解出第三個數字,對已知的兩個數字進行異或就可以得出第三個數字,所以使用迴圈即可得出對應的答案
3. **如下:
from typing import list
class solution:
def decode(self, encoded: list[int], first: int) -> list[int]:
res = list()
second = encoded[0] ^ first
# extend方法可以新增往列表末尾新增多個元素
res.extend([first, second])
for i in range(1, len(encoded)):
# res[-1]表示res列表的最後乙個元素值
return res
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...
2021 02 03 1720 解碼異或後的陣列
1720.解碼異或後的陣列 未知 整數陣列 arr 由 n 個非負整數組成。經編碼後變為長度為 n 1 的另乙個整數陣列 encoded 其中 encoded i arr i xor arr i 1 例如,arr 1,0,2,1 經編碼後得到 encoded 1,2,3 給你編碼後的陣列 encod...
1734 解碼異或後的排列
題目描述 給你乙個整數陣列 perm 它是前 n 個正整數的排列,且 n 是個 奇數 它被加密成另乙個長度為 n 1 的整數陣列 encoded 滿足 encoded i perm i xor perm i 1 比方說,如果 perm 1,3,2 那麼 encoded 2,1 給你 encoded ...