算法题每日一练---第57天:解码异或后的数组

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

3.png

一、问题描述


未知 整数数组 arrn 个非负整数组成。


经编码后变为长度为 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 。可以证明答案存在并且是唯一的。


题目链接:解码异或后的数组


二、题目要求


样例

输入: 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]


考察

位运算基础题型、异或计算
建议用时10~25min


三、问题分析


本题是位运算的第12题,没了解过位运算相关知识点可以看这一篇文章,讲解比较详细:

算法题每日一练---第45天:位运算


这一题最主要的还是考察位运算的异或计算,异或满足交换律与结合律。

假设a b代表输出数组的相邻两位,c代表 encoded数组的结果,满足下面的的关系:
a^b=c
a^a^b=a^c      两边同时异或a
b=a^c          规律出现,b代表输出数组的数字,第一个a就是first(已知)


四、编码实现


classSolution {
public:
vector<int>decode(vector<int>&encoded, intfirst) {
inti,n=encoded.size();//初始数据vector<int>v(n+1);//定义数组v[0]=first;//初值for(i=1;i<=n;i++)//循环判断        {
v[i]=v[i-1]^encoded[i-1];//规律求值        }
returnv;//输出结果    }
};

五、测试结果11.png

相关文章
|
1月前
|
机器学习/深度学习 数据采集 负载均衡
结合多种启发式解码方法的混合多目标进化算法,用于解决带工人约束的混合流水车间调度问题(Matlab代码实现)
结合多种启发式解码方法的混合多目标进化算法,用于解决带工人约束的混合流水车间调度问题(Matlab代码实现)
116 0
|
算法
Leetcode 初级算法 --- 数组篇
Leetcode 初级算法 --- 数组篇
137 0
|
7月前
|
人工智能 自然语言处理 算法
通义灵码 CCF 算法大会首秀,解码研发智能落地「黄金三角」| 文末领取PPT
通义灵码在首届中国计算机学会(CCF)算法大会现场亮相,与领域学者、企业专家、学生开发者共话大模型与 AI 辅助编程对算法创新和开发效率带来的改变。现场交流讨论氛围热烈,广大开发者对通义灵码表现出高度关注和实践热情。
|
8月前
|
存储 监控 算法
关于员工上网监控系统中 PHP 关联数组算法的学术解析
在当代企业管理中,员工上网监控系统是维护信息安全和提升工作效率的关键工具。PHP 中的关联数组凭借其灵活的键值对存储方式,在记录员工网络活动、管理访问规则及分析上网行为等方面发挥重要作用。通过关联数组,系统能高效记录每位员工的上网历史,设定网站访问权限,并统计不同类型的网站访问频率,帮助企业洞察员工上网模式,发现潜在问题并采取相应管理措施,从而保障信息安全和提高工作效率。
147 7
|
9月前
|
存储 人工智能 算法
C 408—《数据结构》算法题基础篇—数组(通俗易懂)
408考研——《数据结构》算法题基础篇之数组。(408算法题的入门)
533 23
|
算法 程序员 索引
数据结构与算法学习七:栈、数组模拟栈、单链表模拟栈、栈应用实例 实现 综合计算器
栈的基本概念、应用场景以及如何使用数组和单链表模拟栈,并展示了如何利用栈和中缀表达式实现一个综合计算器。
231 1
数据结构与算法学习七:栈、数组模拟栈、单链表模拟栈、栈应用实例 实现 综合计算器
|
存储 算法 定位技术
数据结构与算法学习二、稀疏数组与队列,数组模拟队列,模拟环形队列
这篇文章主要介绍了稀疏数组和队列的概念、应用实例以及如何使用数组模拟队列和环形队列的实现方法。
163 0
数据结构与算法学习二、稀疏数组与队列,数组模拟队列,模拟环形队列
|
算法 Java 程序员
【算法每日一练及解题思路】有n级台阶,一次只能上1级或2级,共有多少种走法?
本文深入解析了“爬楼梯问题”,探讨了递归与迭代两种解法,并提供了Java代码实现。通过分析问题本质,帮助读者理解动态规划技巧,提高解决实际编程问题的能力。关键词:Java, 算法, 动态规划, 爬楼梯问题, 递归, 迭代。
586 0
|
存储 算法 Java
深入算法基础二分查找数组
文章深入学习了二分查找算法的基础,通过实战例子详细解释了算法的逻辑流程,强调了确定合法搜索边界的重要性,并提供了Java语言的代码实现。
深入算法基础二分查找数组
|
算法
【Azure Developer】完成算法第4版书中,第一节基础编码中的数组函数 histogrm()
【Azure Developer】完成算法第4版书中,第一节基础编码中的数组函数 histogrm()
112 0

热门文章

最新文章