思路:total=123…n。odd^=encoding[i],其中i%2==1,除perm[0]之外所有的元素的异或。
perm[0]=total^odd。
最后从1开始,前面的元素与encode的对应元素异或得到当前元素。
class Solution {
public:
vector<int> decode(vector<int>& encoded) {
int total=1;
for(int i=2;i<=encoded.size()+1;i++)
total^=i;
int odd=0;
for(int i=0;i<encoded.size();i++)
if(i%2==1) odd^=encoded[i];
vector<int> res(encoded.size()+1,odd^total);
for(int i=1;i<res.size();i++)
res[i]=res[i-1]^encoded[i-1];
return res;
}
};