解码异或后的排列
力扣 1734. 解码异或后的排列
题目说明
给你一个整数数组
perm,它是前n个正整数的排列,且n是个 奇数 。它被加密成另一个长度为
n - 1的整数数组encoded,满足encoded[i] = perm[i] XOR perm[i + 1]。比方说,如果perm = [1,3,2],那么encoded = [2,1]。给你
encoded数组,请你返回原始数组perm。题目保证答案存在且唯一。
- 提示:
3 <= n < 105n是奇数。encoded.length == n - 1
示例
例 1:
1 | 输入:encoded = [3,1] |
例 2:
1 | 输入:encoded = [6,5,4,6] |
笔者理解
此题是一道位运算算法问题,在力扣题库中被定义为中等题。
解法
当笔者阅读完此题后,发现此题因为答案是唯一确定的且元素个数为奇数,可以用异或的性质来进行求解,涉及到的基础性质在之前数组异或操作有讲解,让我们来看看具体如何实现的吧。
实现
1 | public int[] decode(int[] encoded) { |
时间和空间效率都还行,可见此解法还比较适合此题;
总结
本题是今天的每日一题,难度是为中等,感兴趣的朋友都可以去尝试一下,此题还有其他更多的解法,朋友们可以自己逐一尝试。
本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来自 徐年の博客!









