IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 数据结构与算法 -> 【力扣】——解码异或后的数组 -> 正文阅读

[数据结构与算法]【力扣】——解码异或后的数组

题目描述:数组arr由n个非负整数组成,经编码后变为长度为?n - 1?的另一个整数数组?encoded?,其中?encoded[i] = arr[i]^arr[i + 1]?

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

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

思路:对于异或来说,若a^b=c,那么就有a^c=b、b^c=a(在解题时找出的规律,后面会解释)所以除arr[0]为first外,arr[i]=arr[i-1]^encoded[i-1]

代码如下:

int* decode(int* encoded, int encodedSize, int first, int* returnSize){
    *returnSize=encodedSize+1;
    int *arr=(int*)malloc(sizeof(int)*(encodedSize+1));
    arr[0]=first;
    for(int i=1;i<encodedSize+1;++i)
    {
        arr[i]=encoded[i-1]^arr[i-1];
    }
    return arr;

}

结果:

?现在来解释为什么

关于异或操作符就不过多赘述,a^b的结果的二进制位展示了a和b二进制位中不同的地方

例:

7:00000000? 00000000? 00000000? 00000111

5:00000000? 00000000? 00000000? 00000101

7^5:00000000? 00000000? 00000000? 00000010

二者二进制位的第二位不同,所以结果为2

如果只给一个数字2,无法确定原来异或的两个数字,二进制中为0的地方无法确定原数字是1^1还是0^0,二进制中为1的地方也无法确定是哪一个数字的二进制位上的1

如果是给2和5的话,那么就可以确定下来

比如2的二进制第一位为0,5的二进制第一位是1,那么就可以确定另外的一个数字的二进制的第一位是1,其它二进制位同理

而2和5的二进制的第一位数字异或后结果就是1,其它二进制位也是如此,这样就能得出唯一的结果7

因为题目中规定arr由非负整数组成,在本地测试负数的时候结果也是正确的,但毕竟测试用例不多,不保证这个规律是一定正确的

  数据结构与算法 最新文章
【力扣106】 从中序与后续遍历序列构造二叉
leetcode 322 零钱兑换
哈希的应用:海量数据处理
动态规划|最短Hamilton路径
华为机试_HJ41 称砝码【中等】【menset】【
【C与数据结构】——寒假提高每日练习Day1
基础算法——堆排序
2023王道数据结构线性表--单链表课后习题部
LeetCode 之 反转链表的一部分
【题解】lintcode必刷50题<有效的括号序列
上一篇文章      下一篇文章      查看所有文章
加:2021-12-13 13:06:58  更:2021-12-13 13:07:36 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/26 15:30:25-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码