leetcode 1720. Decode XORed Array(python)

描述

There is a hidden integer array arr that consists of n non-negative integers.

It was encoded into another integer array encoded of length n - 1, such that encoded[i] = arr[i] XOR arr[i + 1]. For example, if arr = [1,0,2,1], then encoded = [1,2,3].

You are given the encoded array. You are also given an integer first, that is the first element of arr, i.e. arr[0].

Return the original array arr. It can be proved that the answer exists and is unique.

Example 1:

Input: encoded = [1,2,3], first = 1
Output: [1,0,2,1]
Explanation: If arr = [1,0,2,1], then first = 1 and encoded = [1 XOR 0, 0 XOR 2, 2 XOR 1] = [1,2,3]	

Example 2:

Input: encoded = [6,2,7,3], first = 4
Output: [4,2,0,7,4]

Note:

2 <= n <= 104
encoded.length == n - 1
0 <= encoded[i] <= 105
0 <= first <= 105

解析

根据题意,encoded 是将 arr 数据的挨着的两个元素做异或运算得到的结果,给出了 arr[0] 为 first ,那么只需要将其作为 res 的第一个元素,然后遍历 encoded 的每个元素与 res 的最后一个元素做异或运算,并将异或运算的值追加到 res 后即可得到结果。

解答

class Solution(object):
    def decode(self, encoded, first):
        """
        :type encoded: List[int]
        :type first: int
        :rtype: List[int]
        """
        res = [first]
        for i in encoded:
            res.append(i^res[-1])
        return res

运行结果

Runtime: 204 ms, faster than 58.33% of Python online submissions for Decode XORed Array.
Memory Usage: 15.1 MB, less than 63.06% of Python online submissions for Decode XORed Array.

原题链接:https://leetcode.com/problems/decode-xored-array/

您的支持是我最大的动力

猜你喜欢

转载自blog.csdn.net/wang7075202/article/details/115378404