Leetcode-1720 解码异或后的数组
2021-11-22 本文已影响0人
itbird01
1720. 解码异或后的数组
题意:未知 整数数组 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.考察数学推导公式
a^b = c , abb = a, 即 c^b=a 同理 c^a =b
解题遇到的问题
无
后续需要总结学习的知识点
1.异或的实际用处是什么?
##解法1
class Solution {
public int[] decode(int[] encoded, int first) {
int[] ans = new int[encoded.length + 1];
// a^b = c , a^b^b = a, 即 c^b=a 同理 c^a =b
ans[0] = first;
for (int i = 0; i < encoded.length; i++) {
ans[i + 1] = encoded[i] ^ ans[i];
}
return ans;
}
}