題目描述:
給你乙個整數陣列 perm ,它是前 n 個正整數的排列,且 n 是個 奇數 。
它被加密成另乙個長度為 n - 1 的整數陣列 encoded ,滿足 encoded[i] = perm[i] xor perm[i + 1] 。比方說,如果 perm = [1,3,2] ,那麼 encoded = [2,1] 。
給你 encoded 陣列,請你返回原始陣列 perm 。題目保證答案存在且唯一。
示例 1:
輸入:encoded = [3,1]
輸出:[1,2,3]
解釋:如果 perm = [1,2,3] ,那麼 encoded = [1 xor 2,2 xor 3] = [3,1]
示例 2:
輸入:encoded = [6,5,4,6]
輸出:[2,4,1,5,3]
3 <= n < 105
n 是奇數。
encoded.length == n - 1
方法1:
(1)主要是利用原陣列的長度是奇數這個特點,先找出原陣列中的中間位置的元素具體值,然後從中間向兩端展開,確定各個位置的值;
(2)確定中間位置的值時,先確定原陣列所有元素異或的結果m,然後再對加密的陣列從中間展開,成對的元素和m進行異或,最後的結果就是原陣列的中間值;
class
solution
//對加密的陣列從中間開始向兩端遍歷
int right=encoded.
size()
/2;int left=right-1;
int tmp=0;
while
(left>=0)
vector<
int>
res(len,0)
;//原陣列
res[len/2]
=m;//中間值
//從中間向兩端展開,生成原陣列各個位置的元素
left=len/2-
1;right=len/2+
1;while
(left>=0)
return res;}}
;
1734 解碼異或後的排列
1734.解碼異或後的排列 注意審題,注意審題,注意審題。難度中等 給你乙個整數陣列perm,它是前n個正整數的排列,且n是個 奇數 它被加密成另乙個長度為n 1的整數陣列encoded,滿足encoded i perm i xor perm i 1 比方說,如果perm 1,3,2 那麼encod...
1734 解碼異或後的排列
思路 利用異或規律的一道題。首先明確題目對perm的定義,前n個正整數的排列,n為奇數。因為沒重視這句,想了好久都想不出,看了討論裡面說到這個才恍然大悟 意思為perm為乙個陣列,裡面放的是數字1 n,且數量為奇數。又因為encoded i perm i 1 perm i 我們舉個n 5的例子 en...
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...