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

只出现一次的数字(位运算算法)

目录

一:题目链接

二:题目思路

三:代码实现


一:题目链接

二:题目思路

        首先,我们可以通过将数组的元素一直 按位异或(^) 操作,就可以得到那两个只出现一次数字的 按位异或(^) 后的值 ret  。

        之后,我们就要将这两个数字分离开来,怎么做呢?因为 ret & ( - ret) 得到 ret 二进制最低位出现的数字 1,再因为两个数字 按位异或 后不同的二进制位是 1 ,以这个为突破点,我们就可以继续操作。先看代码实现再解释后面:

三:代码实现

        int ret = 0;for(int x : nums) {ret ^= x;}int k = ret & (-ret);int a = 0;int b = 0;for(int x : nums) {if((x & k) != 0) {a ^= x;}else {b ^= x;}} return new int[]{a,b};

        再定义 两个变量 a, b,再遍历一遍数组,因为数组其他元素都会出现两次。所以其中相同的元素会两次进入 a ^= x 或两次进入 b ^= x,无影响。再结合上面所说的两个数字 按位异或 后不同的二进制位是 1 ,以这个为突破点分离两个只出现一次的数字。

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

相关文章:

  • Unity 跨平台构建完全指南
  • linux的centos7安装git软件
  • 江苏省省建设厅网站免费制作网站服务器
  • 前端碎碎念笔记:JavaScript 对象的继承与多态
  • 【Xcode】Macos p12 证书过期时间查看
  • 【AI视频】从单模型,到AI Agent工作流
  • C#知识学习-017(修饰符_6)
  • 视频营销网站网站前端设计与制作ppt
  • 基于单片机直流电机PWM调速闭环控制系统Proteus仿真(含全部资料)
  • WHAT - 前端性能指标(加载性能指标)
  • 网站外包要注意什么wordpress 布局编辑器
  • 人工智能课程:课程目录介绍 总纲
  • 1、机器学习与深度学习
  • 深入解析 kube-proxy:Kubernetes 服务发现的网络基石
  • Bestseller验厂核心解读
  • 1. cuda配置代码提示
  • Docker 构建教程:学习上下文、架构和性能优化技术
  • mysql数据库高级特性(一)
  • 做网站读什么专业个人网站备案内容不合格
  • 如何实现一个线程安全的容器:从同步机制到异常安全的设计实践
  • 网站建设与运营课程建筑行业官网
  • 基于开源AI智能名片链动2+1模式S2B2C商城小程序的互联网运营体系化研究
  • 线上教学小程序:构建高效互动的云端学习空间
  • JAVA校园跑腿校园外卖源码校园外卖小程序校园代买帮忙外卖源码社区外卖源码小程序+公众号+h5
  • 神经网络之链式法则的推导
  • 打印室预约系统|基于java和小程序的打印室预约系统设计与实现(源码+数据库+文档)
  • 东莞市网站建设制作设计平台wordpress顶部导航栏怎么创建
  • 理解 Git 命令 `git reset --hard origin/pre`:版本回退的“利刃”与使用禁忌
  • Git 10 ,使用 SSH 提升 Git 操作速度的实践指南( Git 拉取推送响应慢 )
  • 【C++】使用MSBuild命令行编译ACE、TAO、DDS