1720.解码异或后的数组

https://leetcode-cn.com/problems/decode-xored-array/

难度:简单

题目:

未知 整数数组 arr 由 n 个非负整数组成。

经编码后变为长度为 n - 1 的另一个整数数组 encoded ,其中 encoded[i] = arr[i] XOR arr[i + 1] 。例如,arr = [1,0,2,1] 经编码后得到 encoded = [1,2,3] 。

给你编码后的数组 encoded 和原数组 arr 的第一个元素 first(arr[0])。

请解码返回原数组 arr 。可以证明答案存在并且是唯一的。

提示:

  • 2 <= n <= 10^4
  • encoded.length == n - 1
  • 0 <= encoded[i] <= 10^5
  • 0 <= first <= 10^5

示例:

示例 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]

分析

异或是数字逻辑中的基本概念,也是每种编程语言都支持的基本运算。基本原理就是,对于数字1和0有如下的运算公式:

1 ^ 1 = 0
0 ^ 0 = 0
1 ^ 0 = 1
0 ^ 1 = 1

异或加密是最简单的一种加密方法,简单来讲,假定有一串码流A,然后可以用key进行加密,把加密后的数据保存或发送出去。
而在读取加密数据之后,再用key进行解密。

举例: 5 ^ 6 ^ 5 = 6

知道上面这些内容,就足够完成这道题了。

这里要提及一个误区:

很多朋友说,列表一直append,是一个不断改变列表长度的过程,会造成底层数据的不断复制、扩容。
然后,解题圈里面就铺天盖地的开始告诉读者,遇到这种追加的操作,一定要先初始化好列表的固定长度,然后再进行列表的修改。
请问,那些这么说的人,有专门测试过吗?人云亦云的想当然。呵呵...
去使用不同数量级的用例执行,然后比较一下耗时再来说教吧。
大家可以去测试下初始化列表长度,然后更新数值,与创建空列表append两者的速度。
在十万数量级一下,append的效率要高于初始化后修改。实践出真知,别再你以为的你以为了!

image.png

解题:

class Solution:def decode(self, encoded, first):ret = [first]for i in encoded:first = i ^ firstret.append(first)return ret

欢迎关注我的公众号: 清风Python,带你每日学习Python算法刷题的同时,了解更多python小知识。

我的个人博客:https://qingfengpython.cn

力扣解题合集:https://github.com/BreezePython/AlgorithmMarkdown


http://www.taodudu.cc/news/show-3767699.html

相关文章:

  • python两个文件内容异或_python 异或两个文件 | 学步园
  • python 异或加密 (加密重要信息)
  • python 异或的应用
  • python两个文件内容异或,python 异或两个文件
  • python异或加密和解密
  • python中字符串异或_python 异或加密字符串的实例
  • python中异或怎么算_python 异或运算的前提_异或运算公式
  • Python 异或运算
  • Python异或运算符示例
  • 数据库的安装步骤
  • centos7安装数据库MariaDB
  • windows安装达梦数据库
  • 树莓派数据库的安装教程及基本使用方法(从0开始教你安装数据库)
  • 如何在无网络的情况下给Dbeaver安装数据库驱动
  • 数据库入门——手把手教你安装数据库
  • DataGrip 初探:如何离线安装数据库驱动
  • 安装数据库MySQL 8.0.20.0 详细过程 小白安装
  • 归并排序及其优化
  • Openwrt系统编译
  • 斐讯K1K2使用breed刷路由器固件
  • openwrt java_用openwrt编译斐讯k2(第二章)
  • zerotire 实现穿透及异地组网
  • 在Ubantu虚拟机上编译OpenWrt系统
  • 斐讯K2 PSG1218 刷机教程 基于Breed互刷 清除配置
  • [2018-10-1]斐讯K2 PSG1218 A2 刷bread 和第三方老毛子Padavan固件
  • 斐讯K2(PSG1218)打开telnet及刷机
  • 斐讯K2 PSG1218 A2 刷BREED ,华硕固件。
  • 直播流即推流、拉流
  • javacv实现直播流
  • LiveQing直播点播流媒体如何关闭指定类型的流播放HTTP-FLV直播流|WS-FLV直播流|HLS(m3u8)直播流|RTMP直播流

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

  1. 【JAVA】交错字符串——力扣每日一题(六)(2020.07.18)

    目录 题目:97. 交错字符串 思路 如果你从本文中学习到丝毫知识,那么请您点点关注.点赞.评论和收藏 大家好,我是爱做梦的鱼,我是东北大学大数据实验班大三的小菜鸡,非常渴望优秀,羡慕优秀的人,个人博 ...

  2. leetcode 力扣每日一题系列详解——总目录

    这是总目录,该系列持续更新中........ leetcode 力扣每日一题系列详解--总目录

  3. 【爬虫】力扣每日一题每天自动邮件提醒!!!

    使用python实现了一个力扣每日一题每天自动邮件提醒的小爬虫,小但实用!!! 文章目录 A.需求来源与分析 B.技术角度分析 C.具体分析步骤 1.接口协议分析 2.发邮件 3.写crontab放服 ...

  4. 力扣每日一题每天自动邮件提醒

    A.需求来源与分析 需求来源于生活,对于只是偶尔有兴趣做做题的我,力扣的每日一题对我一直有以下的不便: 太简单不想做,需要花太多时间的不想做,每天打开力扣其实只是想看一下是什么题,有意思才做. 看题需 ...

  5. LeetCode 力扣每日一题 488.祖玛游戏

    题目描述: 你正在参与祖玛游戏的一个变种. 在这个祖玛游戏变体中,桌面上有 一排 彩球,每个球的颜色可能是:红色 'R'.黄色 'Y'.蓝色 'B'.绿色 'G' 或白色 'W' .你的手中也有一些彩 ...

  6. 力扣每日一题——两数相加II

    发现做的题难度始终不高,今天Leecode给了一个稍微难一点的题目.(前两天没更是因为去拔牙了~~>_<~~) 给你两个 非空 链表来代表两个非负整数.数字最高位位于链表开始位置.它们的每 ...

  7. 2022.1.4 力扣-每日一题-猫和老鼠

    题目描述: 两位玩家分别扮演猫和老鼠,在一张 无向 图上进行游戏,两人轮流行动. 图的形式是:graph[a] 是一个列表,由满足 ab 是图中的一条边的所有节点 b 组成. 老鼠从节点 1 开始,第 ...

  8. 力扣每日一题——独一无二出现的次数

    难度:简单 题目: 给你一个整数数组 arr,请你帮忙统计数组中每个数的出现次数. 如果每个数的出现次数都是独一无二的,就返回 true:否则返回 false. 示例 1: 输入:arr = [1,2 ...

  9. 【04-25】力扣每日一题

    本文首发于馆主君晓的博客,04-25每日一题 题目描述   话不多说,先放题目链接和题目截图,398.随机数索引,题目如下图所示: 题目分析   一般人看到这道题的思路就是使用哈希表去做,首先建立一个 ...

最新文章

  1. RabbitMQ消息队列-Centos7下安装RabbitMQ3.6.1
  2. vue:vue页面刷新vuex数据消失问题
  3. 谁来执行Rebalance以及管理consumer的group呢?
  4. 排序下---(冒泡排序,快速排序,快速排序优化,快速排序非递归,归并排序,计数排序)
  5. linux 硬盘繁忙,icinga2 借助check_iostat.sh抓取linux服务器的diskIO(硬盘繁忙度)
  6. 如何 SSH 到 Linux 服务器里的特定目录及执行命令?
  7. Android 蓝牙技术 实现终端间数据传输
  8. Android中文API(142) —— Gravity
  9. 基于阿里云上实现全站https
  10. boostrap中模态框显示在阴影之下
  11. plsql导出表结构到excel_PLSQL怎样导出oracle表结构和数据
  12. 无法处理类型为text html,types – 解释为Font但使用MIME类型text / html传输的资源将无法修复...
  13. AI上推荐 之 NeuralCF与PNN模型(改变特征交叉方式)
  14. php红包现金,php实现微信支付之现金红包
  15. shiro:principal为空问题
  16. ESP32 Ubuntu开发环境搭建
  17. Android-Handle详解
  18. Flutter开发之Http网络请求
  19. (转)水经注谷歌地图的级别与对应比例尺及分辨率探究
  20. c++ 正则表达式验证手机号码

热门文章

  1. mysql主从shardingsphere分库分表
  2. 系统安全-Windows下的注册表操作
  3. TensorFlow学习笔记Day01-安装TensorFlow
  4. 搜狗输入法显示全角符号,切换全角操作
  5. css中字的大小,字体大小大于CSS中设置的大小
  6. Google又被人“盯”上了?九爱到底想干吗?
  7. 超越ChatGPT——SelfCommNet:一种拥有自我意识的神经网络设计
  8. Kibana:运用 transform 来实现服务质量目标(SLO)的可视化
  9. 使用SFML框架打造属于自己的俄罗斯方块
  10. Https 公钥私钥交换过程