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

LeetCode——2683. 相邻值的按位异或

通过万岁!!!

  • 题目:给你一个长度为n的数组derived,然后让你看下他能不能通过另外一个数组异或而来。规则是derived[i] = original[i] 异或 original[i+1],如果i位于最后i=n-1,则derived[i] = original[i] 异或 original[0]。然后数组只有0和1两个值。
  • 思路:首先是要知道异或什么意思。异或就是相同为0,不同为1。我们看下derived[i] = original[i] 异或 original[i+1]这个公式,其中derived[i]我们是知道的,这里先看i=0时,先假设derived[0]=0,则original[0]和original[1]相同,如果original[0]=0,那么original[1]=0。然后我们继续模拟derived[1],假设derived[1]=0,那么original[2]=0;如果derived[1]=1,那么original[2]只能等于1,因为他要与original[1]不能相同。所以我们可以看到,只要original[0]确定以后,后面的就都出来了。而且我们还能发现original[0]等于0或者等于1,都无所谓。上面的了解完了,我们就可以推导到original[n-1]了。注意了,我们找到了original[n-1],但是我们只满足了derived[n-2],因为derived[n-1]=original[n-1]异或original[0],而original[0]是我们假设的一个值。所以我们最后的结过只需要看original[n-1]异或original[0]是不是等于derived[n-1]就好了。
  • 技巧:数组、异或、位运算

java代码

class Solution {public boolean doesValidArrayExist(int[] derived) {// 异或,相同为0,不同为1int len = derived.length;int[] temp = new int[len];// temp[0] = 0for (int i = 1; i < len; i++) {if (derived[i - 1] == 0) {temp[i] = temp[i - 1];} else {// x & 1 = x % 2temp[i] = (temp[i - 1] + 1) & 1;}}return (temp[len - 1] ^ temp[0]) == derived[len - 1];}
}
  • 总结:关键就是我们需要发现,其实这个original有两个,一个是以0开头的,第二个是以1开头的。这样我们就可以随便假设original[0]了。
http://www.dtcms.com/a/316085.html

相关文章:

  • 3. 为什么 0.1 + 0.2 != 0.3
  • Physics Simulation - UE中Projectile相关事项
  • Android 性能基准测试(Benchmark)完全指南:专业方法与最佳实践
  • VNC连接VirtualBox中的Ubuntu24.04 desktop图形化(GUI)界面
  • 【npm 解决】---- TypeError: crypto.hash is not a function
  • 相机拍摄的DNG格式照片日期如何修改?你可以用这款工具修改
  • Android --- Bug调查经验记录
  • linux 破解密码
  • LangGraph学习笔记 — LangGraph中State状态模式
  • 恶魔轮盘赌
  • 对 .NET线程 异常退出引发程序崩溃的反思
  • 基于vscode连接服务器实现远程开发
  • Redis之Set和SortedSet类型常用命令
  • Rust + WebAssembly 上线实战指南
  • LangChain入门:内存、记录聊天历史 ChatMessageHistory、模型、提示 ( Prompt )、模式 ( Schema )
  • Linux3
  • 在CentOS 7上搭建GitLab服务器的完整指南
  • 第二十五天(数据结构:树)
  • 智慧社区(七)——基于 ECharts 与 Spring Boot 实现小区住户数据统计可视化
  • Java面试宝典:对象的内存布局
  • 龙芯(loongson) ls2k1000 openwrt
  • 人工智能领域、图欧科技、IMYAI智能助手2025年3月更新月报
  • 网络巡查平台管理办法对政务管理有哪些作用
  • 进阶向:PDF合并/拆分工具
  • RabbitMQ削峰填谷详解:让系统在流量洪峰中“稳如泰山”
  • 在 MCP 中实现 “askhuman” 式交互:原理、实践与开源方案
  • Java: jwt 入门介绍(Introduction to JSON Web Tokens)
  • Spring 的依赖注入DI是什么?
  • ChatGPT以及ChatGPT强化学习步骤
  • 陪诊小程序开发:用科技重构就医陪伴的“温度经济”