数据结构与算法

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;
    }
}

上一篇下一篇

猜你喜欢

热点阅读