1734 解碼異或後的排列

2021-10-17 10:32:50 字數 1140 閱讀 3210

題目描述:

給你乙個整數陣列 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...