题目链接
题目描述
给你一个整数数组 p e r m perm perm,它是前 n n n 个正整数的排列,且 n n n 是个 奇数 。

它被加密成另一个长度为 n n n - 1 的整数数组 e n c o d e d encoded encoded,满足 e n c o d e d [ i ] encoded[i] encoded[i] = p e r m [ i ] perm[i] perm[i] X O R XOR XOR p e r m [ i + 1 ] perm[i + 1] perm[i+1]。比方说,如果 p e r m perm perm = [1,3,2] ,那么 e n c o d e d encoded encoded = [2,1] 。

给你 e n c o d e d encoded encoded 数组,请你返回原始数组 p e r m perm perm。题目保证答案存在且唯一。

示例 1

输入:encoded = [3,1]
输出:[1,2,3]
解释:如果 perm = [1,2,3] ,那么 encoded = [1 XOR 2,2 XOR 3] = [3,1]

提示:
3 ≤ n < 1 0 5 3 \leq n < 10^5 3≤n<105
n n n 是奇数。
e n c o d e d . l e n g t h = = n − 1 encoded.length == n - 1 encoded.length==n−1

原数组    p[0]    p[1]    p[2]    p[3]    p[4]
加密数组 e[0] = p[0]^p[1]e[1] = p[1]^p[2]e[2] = p[2]^p[3]e[3] = p[3]^p[4]
奇数项下标 e[1]^e[3] = p[1]^p[2]^p[3]^p[4]
题目说原数组是关于 1~n 的一个排列
得出结论: 1^2^(...)^n = p[0]^e[1]^(...)^e[n-2]
p[0] = 1^2^(...)^n^e[1]^(...)^e[n-2],求出p[0],原数组即解
class Solution {public:vector<int> decode(vector<int>& encoded) {int n = encoded.size()+1;int t = 0;for(int i = 1; i <= n; i++) t ^= i;for(int i = 0; i < encoded.size(); i++)if(i&1) t ^= encoded[i];vector<int> ans;ans.push_back(t);for(int i = 0; i < encoded.size(); i++)ans.push_back(ans.back()^encoded[i]);return ans;}
};

Leetcode 1734 解码异或后的排列相关推荐

  1. leetcode 1734. 解码异或后的排列(位运算)

    给你一个整数数组 perm ,它是前 n 个正整数的排列,且 n 是个 奇数 . 它被加密成另一个长度为 n - 1 的整数数组 encoded ,满足 encoded[i] = perm[i] XO ...

  2. leetcode 1720. 解码异或后的数组(位运算)

    未知 整数数组 arr 由 n 个非负整数组成. 经编码后变为长度为 n - 1 的另一个整数数组 encoded ,其中 encoded[i] = arr[i] XOR arr[i + 1] .例如 ...

  3. 力扣每日一题:1720.解码异或后的数组 python异或操作

    1720.解码异或后的数组 https://leetcode-cn.com/problems/decode-xored-array/ 难度:简单 题目: 未知 整数数组 arr 由 n 个非负整数组成 ...

  4. HDU 6625 three arrays 求两个序列异或最小值的排列(一个可以推广的正解

    目录 题意: 解析 原题描述 @(hdu 6625求两个序列异或最小值的排列) 题意: \(T(100)\)组,每组两个长度为\(n(100000)\)的排列,你可以将\(a[]\)和\(b[]\)随 ...

  5. 二叉数先序,中序,后序排列(递归与非递归)

    先序,中序,后序排列 前序遍历:根结点 ---> 左子树 ---> 右子树 中序遍历:左子树---> 根结点 ---> 右子树 后序遍历:左子树 ---> 右子树 --- ...

  6. LeetCode 91.解码方法

    LeetCode 91.解码方法 ways: s[i] = 0 : if(s[i-1] == 1 || s[i-1] == 2) :s[i]只能和前一位绑定在一起,此时dp[i] = dp[i-2]; ...

  7. LeetCode——1803. 统计异或值在范围内的数对有多少(Count Pairs With XOR in a Range)[困难]——分析及代码(Java)

    LeetCode--1803. 统计异或值在范围内的数对有多少[Count Pairs With XOR in a Range][困难]--分析及代码[Java] 一.题目 二.分析及代码 1. 暴力 ...

  8. LeetCode题解(1846):减小和重新排列数组后的最大元素(Python)

    题目:原题链接(中等) 标签:排序.贪心算法 解法 时间复杂度 空间复杂度 执行用时 Ans 1 (Python) O(NlogN)O(NlogN)O(NlogN) O(N)O(N)O(N) 68ms ...

  9. leetcode:224周赛:5655. 重新排列后的最大子矩阵(中等)

    题目: 分析: 还行自己写出来啦. 思路: 1.变标注,值为该列从该位置开始连续1的个数, 2.枚举,从i=1~n,底边为i的矩形的最大高度.一个三重循环. 代码: class Solution {p ...

最新文章

  1. 23、Java Swing JTree:树组件
  2. Java对象的四种引用方式
  3. AttributeError: 'module' object has no attribute 'text_format'
  4. 堆化 二叉堆一般用数组来表示。typedef struct _minHeapNodetypedef struct _otherInfo-icoding-C-数据结构
  5. freemarker html 引入script_HTML编码规范
  6. 【AI视野·今日CV 计算机视觉论文速览 第162期】Fri, 27 Sep 2019
  7. 整合servlet、整个filter、整合listener、文件上传
  8. 里计算两个数的总和_发动机排量怎样计算?懂这个的修理工真嘀很少!
  9. 使用ANT编译项目报错 com.sun.image.codec.jpeg does not exist 解决方法
  10. luogu p1652 圆
  11. CFS中一些调度参数的实现原理
  12. 神舟笔记本电脑进入u启动之BIOS设置方法
  13. 只需4步,微软数据科学家教你用OpenRefine搞定数据清洗
  14. ubuntu16.04 lidar_align实现三维激光雷达和Imu联合标定
  15. 汉印HPRT HN-3208SR 驱动
  16. C++循环结构实例:估算e值:计算e=1+(1/1!)+(1/2!)+…的近似值,1/n!小于10^(-7)时停止计算
  17. ssm课程答疑系统的设计与实现毕业设计源码261620
  18. Lua 最全的快速入门教程
  19. C语言程序入门设计OJ练习题7 浙江大学——程序入门设计-翁恺
  20. 模拟电路笔记(二)晶体三极管及放大电路

热门文章

  1. Study Group Learning: ImprovingRetinal Vessel Segmentation Trained with Noisy Labels学习笔记(有代码)-仅自用
  2. 李治军老师操作系统实验6----地址映射与共享-共享内存函数(shmget、shmat、shmctl)
  3. 量子计算机功能强大是因为能量有最小单位吗,量子计算机功能强大是因为能量有最小单位...
  4. 扫地机器人灰尘传感器应用存在的技术难题
  5. 基于高德sdk实现摩拜单车主界面,滑动地图获取地址信息
  6. Grid 布局 - 网格布局
  7. php怎么插入数据,利用PHP怎么向MySQL数据库中插入数据
  8. 湖南地区计算机专业二本排名,湖南二本学校2021年最新排名
  9. python实现通讯录管理系统
  10. IntelliJ IDEA删除Project