当前位置: 首页 > news >正文

LeetCode 2433.找出前缀异或的原始数组

给你一个长度为 n 的 整数 数组 pref 。找出并返回满足下述条件且长度为 n 的数组 arr :

pref[i] = arr[0] ^ arr[1] ^ … ^ arr[i].
注意 ^ 表示 按位异或(bitwise-xor)运算。

可以证明答案是 唯一 的。

示例 1:

输入:pref = [5,2,0,3,1]
输出:[5,7,2,3,2]
解释:从数组 [5,7,2,3,2] 可以得到如下结果:

  • pref[0] = 5
  • pref[1] = 5 ^ 7 = 2
  • pref[2] = 5 ^ 7 ^ 2 = 0
  • pref[3] = 5 ^ 7 ^ 2 ^ 3 = 3
  • pref[4] = 5 ^ 7 ^ 2 ^ 3 ^ 2 = 1
    示例 2:

输入:pref = [13]
输出:[13]
解释:pref[0] = arr[0] = 13

提示:

1 <= pref.length <= 105
0 <= pref[i] <= 106

根据题意,我们得到以下公式:
pref[i - 1] = arr[0] ^ arr[1] ^ … ^ arr[i - 1]
pref[i] = arr[0] ^ arr[1] ^ … ^ arr[i] = pref[i - 1] ^ arr[i]

如果a ^ b = c,则b = a ^ c,a = b ^ c,因此arr[i] = pref[i] ^ pref[i - 1],直接模拟即可:

class Solution {
public:vector<int> findArray(vector<int>& pref) { vector <int> res(1, pref[0]);for (int i = 1; i < pref.size(); ++i){res.push_back(pref[i - 1] ^ pref[i]);}return res;}
};

如果pref的长度为n,则此算法时间复杂度为O(n),空间复杂度为O(1)。

相关文章:

  • 5 buuctf解题
  • 淘宝京东1688实时API商品详情数据解析:获取市场最新趋势
  • 基于Java SSM框架实现高考填报信息系统项目【项目源码】
  • 第6.3章:StarRocks查询加速——Bucket Shuffle Join
  • fastJSON 字符串转对象
  • CCAA审核员职业健康安全管理体系基础考试大纲
  • HTTPS对HTTP的加密过程
  • ES6 | (一)ES6 新特性(上) | 尚硅谷Web前端ES6教程
  • 突破编程_C++_设计模式(单例模式)
  • stack类别
  • 前端项目打包体积分析与优化
  • 自定义神经网络三之梯度和损失函数激活函数
  • 从零到一:Spring Boot自定义条件注解的创建与使用
  • docker pullpush 生成镜像文件并push 到阿里云
  • 【毛毛讲书】【宝贵的人生建议】在面对人生选择时,我们该如何做出明智的决策呢?
  • 【5+】跨webview多页面 触发事件(二)
  • android高仿小视频、应用锁、3种存储库、QQ小红点动画、仿支付宝图表等源码...
  • CSS魔法堂:Absolute Positioning就这个样
  • iOS筛选菜单、分段选择器、导航栏、悬浮窗、转场动画、启动视频等源码
  • Java到底能干嘛?
  • Java读取Properties文件的六种方法
  • LeetCode29.两数相除 JavaScript
  • Less 日常用法
  • Redis 懒删除(lazy free)简史
  • UEditor初始化失败(实例已存在,但视图未渲染出来,单页化)
  • 干货 | 以太坊Mist负责人教你建立无服务器应用
  • 高性能JavaScript阅读简记(三)
  • 个人博客开发系列:评论功能之GitHub账号OAuth授权
  • 技术胖1-4季视频复习— (看视频笔记)
  • 如何进阶一名有竞争力的程序员?
  • 如何胜任知名企业的商业数据分析师?
  • 系统认识JavaScript正则表达式
  • 终端用户监控:真实用户监控还是模拟监控?
  • Spark2.4.0源码分析之WorldCount 默认shuffling并行度为200(九) ...
  • ​LeetCode解法汇总2583. 二叉树中的第 K 大层和
  • #if和#ifdef区别
  • (2)Java 简介
  • (4)通过调用hadoop的java api实现本地文件上传到hadoop文件系统上
  • (C语言)输入一个序列,判断是否为奇偶交叉数
  • (js)循环条件满足时终止循环
  • (二)七种元启发算法(DBO、LO、SWO、COA、LSO、KOA、GRO)求解无人机路径规划MATLAB
  • (二)正点原子I.MX6ULL u-boot移植
  • (附源码)计算机毕业设计SSM疫情社区管理系统
  • (每日持续更新)jdk api之FileReader基础、应用、实战
  • (四)docker:为mysql和java jar运行环境创建同一网络,容器互联
  • (算法)求1到1亿间的质数或素数
  • (一)基于IDEA的JAVA基础12
  • (转)ORM
  • .net core webapi 部署iis_一键部署VS插件:让.NET开发者更幸福
  • .NET 读取 JSON格式的数据
  • [ HTML + CSS + Javascript ] 复盘尝试制作 2048 小游戏时遇到的问题
  • []AT 指令 收发短信和GPRS上网 SIM508/548
  • [Android]通过PhoneLookup读取所有电话号码
  • [CentOs7]图形界面
  • [codevs 1288] 埃及分数 [IDdfs 迭代加深搜索 ]