描述
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/
您的支持是我最大的动力