文章目錄
- 1. 題目
- 2. 解題
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 <= 10^4
encoded.length == n - 1
0 <= encoded[i] <= 10^5
0 <= first <= 10^5
https://leetcode-cn.com/problems/decode-xored-array/
2. 解題
- 一個數異或偶數次就抵消了,相當于沒有
encoded[i] = arr[i] ^ arr[i + 1],encoded[i] ^ arr[i] = arr[i] ^ arr[i + 1] ^ arr[i] = arr[i+1]
class Solution {
public:
vector<int> decode(vector<int>& encoded, int first) {
int n = encoded.size();
vector<int> ans(n+1);
ans[0] = first;
for(int i = 0; i < n; i++)
{
ans[i+1] = ans[i]^encoded[i];
}
return ans;
}
};
52 ms 24.5 MB C++
我的CSDN博客地址 https://michael.blog.csdn.net/
長按或掃碼關注我的公眾號(Michael阿明),一起加油、一起學習進步!

轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/247251.html
標籤:其他
