前言
经过前期的基础训练以及部分实战练习,粗略掌握了各种题型的解题思路。后续开始专项练习。
描述
实现原理与步骤
异或演化公式推导
encoded[i] = arr[i] ^ arr[i + 1]
=>encoded[i]^arr[i]=arr[i]^arr[i]^arr[i+1]
=>encoded[i]^arr[i]=0^arr[i+1]
=>encoded[i]^arr[i]=arr[i+1]
=>arr[i]=encode[i-1]^arr[i-1]
arr[0]=first
代码实现
class Solution {
/**
* 异或的性质:
* 1.异或自己为0
* 2.异或0等于自身
* 3.异或满足交换律和结合率
* encoded[i]=arr[i] ^ arr[i+1]
*=> encoded[i]^arr[i]=arr[i+1]
*/
public int[] decode(int[] encoded, int first) {
int n=encoded.length+1;
int[] arr=new int[n];
arr[0]=first;
for(int i=1;i<n;i++){
arr[i]=arr[i-1]^encoded[i-1];
}
return arr;
}
}