class Solution {
// 假设encoded: AB BC CD DE
// perm 即为A B C D E
// 根据perm ABCDE 和 encoded BCDE 推断出A
public int[] decode(int[] encoded) {
int[] perm = new int[encoded.length+1];
int permLength = perm.length;
// 分别存储 (ABCDE) (BC DE)
int permAll = 0, encodedAll = 0;
for(int i=0; i<permLength; i++){
permAll ^= (i+1);
if( (i&1) == 1){
encodedAll ^= encoded[i];
}
}
// 找到A
perm[0] = encodedAll^permAll;
// 根据 A找B 通过encoded AB BC CD DE
for(int i=1; i<perm.length; i++){
perm[i] = (perm[i-1]^encoded[i-1]);
}
return perm;
}
}