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

【经典专题】强大的性质与惊艳的解法——异或运算 异或运算简介 符号 异或运算即exclusive OR,通常写作XOR,数学符号⊕,程序符号^。 运算 相同为0(1^1=0, 0^0=0),不同为1(1^0=1, 0^1=1) 性质 ① 自反性:a ^ b ^ b = a ② 无序性:a ^ b ^ c ^ d = b ^ d ^ a ^ c ③ 可移项性:a ^ b = c 可移项为 a = b ^ c,移项时无需改变符号 ④ 位独立性:每一位的异或互相独立,比如 1010 ^ 1110 = 0100       题目1: 阅读详情

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 ^ first
            ret.append(first)
        return ret

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

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

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

【异常】Claude Code 第三方API 400报错(thinking type should be enabled or disabled)解决方案 摘要: Claude Code接入第三方API端点时出现400参数错误,主要因新版默认启用的Adaptive Thinking功能与旧版接口参数格式不兼容(需thinking: {type: "adaptive"},但第三方仅支持布尔值)。解决方案为修改本地settings.json配置文件,添加"CLAUDE_CODE_DISABLE_ADAPTIVE_THINKING": "1"环境变量并重启客户端,即可恢复思考模式功能。Adaptive Th 阅读详情

相关推荐

Ubuntu 22.04 实战:为WIFI6网卡Realtek RTL8852BE手动编译驱动指南

本文详细介绍了在Ubuntu 22.04系统上为Realtek RTL8852BE WIFI6网卡手动编译驱动的完整指南。从问题诊断、环境准备到源码获取、编译安装,逐步解决驱动缺失问题,并提供常见问题排查和性能优化建议,帮助用户充分发挥WIFI6网卡性能。

weixin_30808693的博客 479

LeetCode每日一题1 - 1720.解码异或后的数组(Python编程)

这是个人刷题笔记系列,题目来源于LeetCode,使用的编程语言主要是python。

imageshhhh的博客 336

详解APM的开方控制器sqrt_controller

前言 前面说过,sqrt_controller是对P项进行整定用途的,目的就是让P项的控制响应“软”下来,实际上就是一个经过改进的P控制器。读懂了sqrt_controller,那么你对APM的P控制器就了解得差不多了。 仅讨论P控制器,sqrt_controller的作用就是设定一个量linear_dist,以这个量的正负值为分界线划分出一个线性区域范围,在这个范围内表示误差量还很小,遵循Kp*error计算方式输出控制量。 超过linear_dist后,表明误差较大,此时不能由着误差单纯按照线性方式乘以

moumde的博客 4896

LeetCode题解(1720):解码异或后的数组(Python)

题目:原题链接(简单) 标签:位运算 解法 时间复杂度 空间复杂度 执行用时 Ans 1 (Python) O(N)O(N)O(N) O(1)O(1)O(1) 56ms (67.80%) Ans 2 (Python) Ans 3 (Python) 解法一: class Solution: def decode(self, encoded: List[int], first: int) -> List[int]: ans = [first]

长行 554

5分钟搞定PettingZoo多智能体环境搭建:从安装到运行第一个Demo

本文详细介绍了如何在5分钟内完成PettingZoo多智能体环境的搭建,从安装到运行第一个Demo。通过精准的版本控制和常见问题解决方案,帮助开发者快速上手多智能体强化学习(MARL)环境配置,并提供了实战案例和性能优化技巧。

backprop5master的博客 221

STM32驱动AD2S1210实现旋变解码与角度读取

旋转变压器作为一种耐高温、抗振动的角度传感器,在工业伺服、机器人关节和电动汽车电驱等场景中占据重要地位。其输出信号需要经过专用转换芯片处理才能被MCU高效使用。AD2S1210是一款典型的旋变数字转换器(RDC),内部采用Type II型跟踪环,将模拟SIN/COS信号实时解算为数字角度与速度,降低了处理器负担并提升抗干扰能力。本文基于STM32平台,详细介绍了AD2S1210的硬件接线、SPI通信配置、寄存器初始化流程,以及读取位置数据时的SAMPLE脉冲时序等关键实现。同时总结了常见故障如全FF、角度跳

weixin_34194829的博客 194

php 字节数组 md5加密,phpmd5加密之后对字节进行异或操作的问题

$string = "!&22E2&!'&5aSJ^#$&6 $md5 = md5("0E2C83D839C026A5E0530100007FEB90".md5($string,true),true);对md5加密后返回的16位二进制字节进行异或操作$data = array();$data[0]="0";for($i = 0; $i < strlen($m...

weixin_39565910的博客 420

【Burp入门第三十一篇】Burp+SwitchyOmega实现本地localhost代理

在部分情况下(如本地靶场),当我们需要在Burp中查看、修改本地流量包的时候,按以下三个配置是不能得到本地流量包的。

等风来 3214

LeetCode刷题1720-简单-解码异或数组

LeetCode刷题1720-简单-解码异或数组

布小禅的博客 4543

【系统移植】 移植主线U-Boot(v2024.01-rc3)到RK3399

[系统移植] 移植主线U-Boot(v2024.01-rc3)到RK3399

Systemcall名屋 1004

SPI为什么不需要加上拉电阻

大家好,我是记得诚。I2C因为其开漏的结构,无法输出高电平,所以外部加上拉电阻。我们在使用SPI的时候,发现是不需要加上拉电阻的。主要因为SPI多为推挽的结构,推挽电路,高低电平都可以输出,所以外部不需要加上拉电阻。推挽电路可以用2个三极管或者2个MOS管搭建而成。

记得诚 2628

力扣每日一题:852.山脉数组的峰顶索引 喜迎收假,重拳出击....

852.山脉数组的峰顶索引 https://leetcode-cn.com/problems/peak-index-in-a-mountain-array/solution/852shan-mai-shu-zu-de-feng-ding-suo-yin-9krsr/ 难度:简单 题目: 符合下列属性的数组 arr 称为 山脉数组 : arr.length >= 3 存在 i(0 <...

清风Python 5871

反光柱定位算法实战03:VEnus代码解析和纯反光柱定位中的可改进方向

本文深入解析了开源框架VEnus的反光柱定位与建图实现流程,包括强度提取、聚类、数据关联、位姿优化等核心模块。同时指出其三大局限:匹配质量脆弱性、单一传感器依赖和地图扩展逻辑缺失,并提出改进方向:融合里程计/IMU数据、引入图优化后端、建立动态地图维护机制。该分析为基于反光柱的定位系统优化提供了实用参考,有助于提升工业场景下的定位鲁棒性和精确性。

Studying…… 520

刷穿剑指offer-Day21-队列II 使用队列实现广度优先搜索!

昨日回顾 昨天,我们介绍了队列的基础知识,并分别学习了Python与Java中队列的操作方法。 在此基础上,通过两道简单的队列题,掌握了基本的入队与出队操作。然而,队列的题目可不只是简单按照顺序出入队那么简单。 队列有一个最为经典的使用方式,就是 广度优先搜索( BFS) 。而广度优先搜索中,又数二叉树的遍历更为常用。今天我们就通过几道二叉树的题目,来掌握广度优先搜索的使用。 二叉树什么时候该使用...

清风Python 4943

TMS_WebGMaps_1.9.8.0_Full_Source

TMS_WebGMaps_1.9.8.0_Full_Source 全源码 delphi cbuilder

迈瑞BS系列全自动生化分析仪LIS协议接口手册(内含HL7和ASTM)

迈瑞BS系列全自动生化分析仪LIS协议接口手册,内含HL7和ASTM)

教你创建电脑、手机同步的markdown云笔记--力扣刷题力荐!

开篇先致歉 其他不谈,开篇必须先给各位读者道个歉,年后工作上比较忙,加上最近闲暇的时间都用来在力扣上刷算法题了,导致公众号断更有些严重啊。再加上年后将健身减重提上了日程,时间上就更显的捉襟见肘了。 不过忙活一阵子还是有些收获的,减肥13斤,刷题80道+,虽然算法还在彩笔的边缘疯狂挣扎(然后挣扎不出去),但起码比之前要好很多了周赛四道题,一道简单和两道中等基本都可以AC,只是有时会第二道中等完成时考...

清风Python 3715

win10 跳过U8环境检测的IE WebControls.rar

win10 安装u8的时候 提示IE WebControls 不通过,这个工具可以欺骗u8的检查。 跳过U8环境检测的IE WebControls。提示导入失败后,重新检测通过。

实用算法题:excel表列序号与十进制数字的互相转化算法讲解!

日常生活中excel的使用大家都不陌生,可能几列的表格我们还能脑海中参照A-Z来区分对应的数字应该是几。但有的表格列过多,或者鼠标一甩到了很后面的位置,好几个字母拼起来,一时间很难反映过来对应的数字是多少列。所以今天力扣这两道算法题,就帮我们解决了这个问题。当然近半年的这两题的出题公司有: 微软 6次 Shopee 3次 苹果 2次 高盛 2次 额,居然没有国内大厂?是要把excel换成W...

清风Python 1707

VC中sqlite的使用

在VC中对sqlite的使用,实现数据库大批数据的快速插入,读取数据库中的数据在ListCtrl中显示

来和我一起四十天刷完 剑指offer II-专项突破!

写在前面的话 最近公众号断更了,嗯...不是因为懒,而是一直在用Python刷算法题感觉有些腻了,打算捡起许久不用的Java,学学Java基础,然后使用Java、Python双语言进行leetcode刷题学习。 本来打算复习完Java面向对象知识后,把所有涉及算法的数据结构与知识都学习完再开始继续更新的,但前天看到了新版本的剑指offer II-专项突破版这本书,这次的剑指offer第二版使用Ja...

清风Python 1290

力扣每日一题:496、503、739 单调栈问题三连发!

496.下一个更大元素I https://leetcode-cn.com/problems/next-greater-element-i/solution/496xia-yi-ge-geng-da-yuan-su-i-by-qingfe-qfu9/ 难度:简单 题目: 给你两个 没有重复元素 的数组 nums1 和 nums2 ,其中nums1 是 nums2 的子集。 请你找出 nums1 ...

清风Python 907

分享一个翻倍提升算法刷题通过率的技巧

2021年的学习目标 年初制定的21年学习计划中,将算法之美加入了今年的重点内容。模仿万达老王的语气,先给自己制定一个小目标,年底前力扣刷题300+。只要坚持leetcode每日一题满勤,这个小目标基本就可以达成了。 之前其实是比较讨厌算法的,枯燥无趣、费时费脑,但没办法,算法已经成为各大公司面试必考的内容,只能硬着头皮刷题了。 在算法方面,个人觉得当前的水平大概就是,站在彩笔儿子的边缘疯狂突击,...

清风Python 821

670.最大交换 暴力、单调栈、指针的逆序遍历 三种解题思路。

力扣每日一题

清风Python 774

刷穿剑指offer-Day15-哈希表II Python&Java的哈希表方法与解题套路!

昨日回顾 昨天我们开始了哈希表的学习,讲解了哈希表的集中实现方式。并通过一道 设计哈希集合 的题目,让我们将哈希表的理论转化为实践。 今天,我们就开始正式学习哈希表在Python与Java中的使用方式。在Java中,哈希表有两个数据类型 HashMap 与 HashSet,它们对应Python中的 dict 与 set ,下面我们开始分类学习! HashSet & set 我们在昨天的设计...

清风Python 747

python 两个栈实现一个队列 && 两个队列实现一个栈

剑指Offer09.用两个栈实现队列 https://leetcode-cn.com/problems/yong-liang-ge-zhan-shi-xian-dui-lie-lcof/solution/jian-zhi-offer09yong-liang-ge-zhan-shi-x-hybm/ 难度:简单 题目: 用两个栈实现一个队列。队列的声明如下,请实现它的两个函数 appendTail...

清风Python 691

刷穿剑指offer-Day02-整数II

昨日回顾 昨天作为这个系列的第一篇文章,分别介绍了Java与Python的以下内容: 整数类型与考点 二进制与十进制的转换 与、或、异或的操作 位移操作 以上内容,如果遗忘了,一定要定时复习啊...今天是整数的第二篇文章,会和大家稍有跳跃分享一道简单题+一道中等题目,用来对二进制算法完成进一步的巩固。 每道题涉及的知识点会在题目分析中给出整理。让我们开始吧! 剑指OfferII002.二进制加...

清风Python 687

力扣每日一题:5705. 判断国际象棋棋盘中一个格子的颜色 深度剖析思路!

5705. 判断国际象棋棋盘中一个格子的颜色 难度:简单 题目: 给你一个坐标 coordinates ,它是一个字符串,表示国际象棋棋盘中一个格子的坐标。下图是国际象棋棋盘示意图。 如果所给格子的颜色是白色,请你返回 true,如果是黑色,请返回 false 。 给定坐标一定代表国际象棋棋盘上一个存在的格子。坐标第一个字符是字母,第二个字符是数字。 示例: 示例 1: 输入:coo...

清风Python 686

力扣每日一题:692.前K个高频单词 Python双解,包教包会!

692.前K个高频单词 难度:中等 题目: 给一非空的单词列表,返回前 k 个出现次数最多的单词。 返回的答案应该按单词出现频率由高到低排序。如果不同的单词有相同出现频率,按字母顺序排序。 注意: 假定 k 总为有效值, 1 ≤ k ≤ 集合元素数。 输入的单词均由小写字母组成。 示例: 示例 1: 输入: ["i", "love", "leetcode", "i", "love", "...

清风Python 659

Python堆排序介绍与力扣三道堆相关题目分享

堆的定义 堆 是一种特别的二叉树,满足以下条件的二叉树,可以称之为 堆: 完全二叉树; 每一个节点的值都必须 大于等于或者小于等于 其孩子节点的值。 堆 具有以下的特点: 可以在 O(logN)O(logN) 的时间复杂度内向 堆 中插入元素; 可以在 O(logN)O(logN) 的时间复杂度内向 堆 中删除元素; 可以在 O(1)O(1) 的时间复杂度内获取 堆 中的最大值或最小值。 堆的...

清风Python 638
上一篇: 力扣每日一题:740.删除并获得点数 python动态规划详解!
下一篇: 力扣每日一题:18.四数之和
清风Python
博客等级 码龄7年 406粉丝 267原创
评论 1
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值