织梦怎么做淘客网站,青龙建站教程自学网,公司网站公司简介宣传夸大受处罚,有的网站打不开 但别人电脑能打开未知 整数数组 arr 由 n 个非负整数组成。
经编码后变为长度为 n - 1 的另一个整数数组 encoded #xff0c;其中 encoded[i] arr[i] XOR arr[i 1] 。例如#xff0c;arr [1,0,2,1] 经编码后得到 encoded [1,2,3] 。
给你编码后的数组 encoded 和原数组 arr 的第一个元…未知 整数数组 arr 由 n 个非负整数组成。
经编码后变为长度为 n - 1 的另一个整数数组 encoded 其中 encoded[i] arr[i] XOR arr[i 1] 。例如arr [1,0,2,1] 经编码后得到 encoded [1,2,3] 。
给你编码后的数组 encoded 和原数组 arr 的第一个元素 firstarr[0]。
请解码返回原数组 arr 。可以证明答案存在并且是唯一的。
示例 1
输入encoded [1,2,3], first 1 输出[1,0,2,1] 解释若 arr [1,0,2,1] 那么 first 1 且 encoded [1 XOR 0, 0 XOR 2, 2 XOR 1] [1,2,3]
示例 2
输入encoded [6,2,7,3], first 4 输出[4,2,0,7,4]
解题思路
设原数组为arr[]
原数组转为encoded []存在encoded[i] arr[i] XOR arr[i 1]根据异或的性质可得arr[i 1]arr[i] XOR encoded[i]。
因为题目已经给出了arr[0],便可根据公式得出arr[1]arr[0] XOR encoded[0]如此类推就可以得出原数组
代码
func decode(encoded []int, first int) []int {n:len(encoded)1res : make([]int, n)res[0]firstfor i,j : 1,0; i n; i{res[i]encoded[j]^res[i-1]j}return res
}