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

leetcode 2683. 相邻值的按位异或 中等

下标从 0 开始、长度为 n 的数组 derived 是由同样长度为 n 的原始 二进制数组 original 通过计算相邻值的 按位异或(⊕)派生而来。

特别地,对于范围 [0, n - 1] 内的每个下标 i :

  • 如果 i = n - 1 ,那么 derived[i] = original[i] ⊕ original[0]
  • 否则 derived[i] = original[i] ⊕ original[i + 1]

给你一个数组 derived ,请判断是否存在一个能够派生得到 derived 的 有效原始二进制数组 original 。

如果存在满足要求的原始二进制数组,返回 true ;否则,返回 false 

  • 二进制数组是仅由 0 和 1 组成的数组。

示例 1:

输入:derived = [1,1,0]
输出:true
解释:能够派生得到 [1,1,0] 的有效原始二进制数组是 [0,1,0] :
derived[0] = original[0] ⊕ original[1] = 0 ⊕ 1 = 1 
derived[1] = original[1] ⊕ original[2] = 1 ⊕ 0 = 1
derived[2] = original[2] ⊕ original[0] = 0 ⊕ 0 = 0

示例 2:

输入:derived = [1,1]
输出:true
解释:能够派生得到 [1,1] 的有效原始二进制数组是 [0,1] :
derived[0] = original[0] ⊕ original[1] = 1
derived[1] = original[1] ⊕ original[0] = 1

示例 3:

输入:derived = [1,0]
输出:false
解释:不存在能够派生得到 [1,0] 的有效原始二进制数组。

提示:

  • n == derived.length
  • 1 <= n <= 10^5
  • derived 中的值不是 0 就是 1 。

分析:可以根据 derived 数组的值,构造一个二进制数组。可能产生冲突的只有第一个值和最后一个值,检查构造时这两个位置是否会发生冲突即可。

bool doesValidArrayExist(int* derived, int derivedSize) {int temp[derivedSize+5],flag[derivedSize+5];temp[0]=flag[0]=1;for(int i=1;i<derivedSize;++i)flag[i]=0;for(int i=0;i<derivedSize;++i){if(flag[(i+1)%derivedSize]==0)flag[(i+1)%derivedSize]=1,temp[(i+1)%derivedSize]=temp[i]^derived[i];else if(temp[i]^temp[(i+1)%derivedSize]!=derived[i])return false;}return true;
}

http://www.dtcms.com/a/307982.html

相关文章:

  • Python实现调整矩阵维度: view
  • 今日矩阵系列
  • mac环境配置rust
  • 机器人系统对接线索平台好处
  • 前端工程化包管理器:从npm基础到nvm多版本管理实战
  • HCIP面试第一章内容总结
  • 老旧远程控制管理模块(物联网设备)渗透实战:SNMP泄露+内核提权攻击链深度解析
  • java web 通过 servlet 给前端设置编码格式
  • 2025年物联网新趋势:格行随身WiFi的模块化架构与低延迟优化
  • AI Agent 的 10 种应用场景:物联网、RAG 与灾难响应
  • 【前端知识】JS单线程模型深入解析
  • 第 10 章 文件和异常
  • 机器人学和自动化领域中的路径规划方法
  • 在幸狐RV1106板子上用gcc14.2本地编译安装samba-4.22.3服务器,并且支持XP系统访问共享文件夹
  • 单调栈:739. 每日温度,496. 下一个更大的元素
  • 【ELasticsearch】集群故障模拟方案(二):磁盘空间满、重选主节点
  • C++ 入门基础(2)
  • Docker compose和Docker-compose的区别
  • 智慧交通中目标检测 mAP↑28%:陌讯多模态融合算法实战解析
  • 【NLP舆情分析】基于python微博舆情分析可视化系统(flask+pandas+echarts) 视频教程 - 微博评论数据可视化分析-点赞区间折线图实现
  • 从“健忘”到“懂我”:构建新一代AI记忆系统
  • 开发指南126-参数管理
  • 【C语言学习】scanf函数
  • TCP 连接管理 之 三次握手详解
  • 在Trae中使用MoonBit月兔1 创建项目
  • 力扣-102. 二叉树的层序遍历
  • 【BUG】nvm无法安装低版本Node.js:The system cannot find the file specified解决方案
  • 关于npm前端项目编译时栈溢出 Maximum call stack size exceeded的处理方案
  • 去重、top_n()、pull()、格式化
  • LCM中间件入门(1):工作原理核心概念及Ubuntu环境下的C++实践