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

C++中如何实现用异或运算找出数组中只出现一次的数字???

文章目录

  • 1、异或运算符的运算

1、异或运算符的运算

问题描述: 给出一个指定的数组,只有一个数出现一次,剩下都出现两次,找出出现一次的数字。指定数组为[1,2,2,1,3,4,3]。
样例输出:4

#include<iostream>
using namespace std;
int main(){int a[7]={1,2,2,1,3,4,3};int ans=0;for(int i=0;i<7;i++){ans^=a[i];}cout<<ans;return 0;
}

在这里插入图片描述
为什么可以这样得出只出现一次的数字呢?

首先大家要先知道异或是个啥
在这里插入图片描述
异或异或,其实就是异(不同)的时候结果为1,同时结果为0
比如1和0异或结果就是1;0和1异或结果也是1;
1和1异或结果是0;0和0结果也是0;

首先我们循环遍历整个数字,每个数字只需要遍历一次
ans的初始值是0,我们知道0与任何数异或都等于任何数本身!!
所以我们这个for循环其实就是把所有数组里的每一个元素进行了异或,也就是1 ^ 2 ^ 2 ^ 1 ^ 3 ^ 4 ^ 3
我们利用异或运算满足交换律、结合律
也就是不管1和1有没有挨在一起,都能得到(1^1) ^ (2 ^ 2) ^ (3 ^ 3) ^ 4
再者,对于任何数a,都有a^a=0
所以(1^1) ^ (2 ^ 2) ^ (3 ^ 3) ^ 4其实就等于0 ^ 4,也就是4
完美撒花
在这里插入图片描述

http://www.lryc.cn/news/10750.html

相关文章:

  • 红黑树的历史和由来。
  • 蓝库云|制造业数字化转型为何转不动?资料处理很重要
  • 【python学习笔记】 :Lambda 函数
  • Nginx的proxy buffer参数设置
  • SPI简介与实例分析
  • 通过基于pgsql的timescaleDB的time_bucket函数实现自定义聚合粒度
  • 一台电脑安装26个操作系统(windows,macos,linux)
  • dockerfile文件
  • 视觉SLAM ch11回环检测
  • 关于Ubuntu20.04文件系统思考
  • 内嵌于球的等边三棱柱
  • 论文解读 | [CVPR2020] ContourNet:向精确的任意形状场景文本检测迈出进一步
  • 干货分享|数据可视化报表制作技巧
  • Longhorn,企业级云原生容器分布式存储 - 备份与恢复
  • 亿级高并发电商项目-- 实战篇 --万达商城项目 十(安装与配置Elasticsearch和kibana、编写搜索功能、向ES同步数据库商品数据)
  • windwos安装spring-cloud-alibaba-nacos
  • Spring Boot 项目如何统一结果,统一异常,统一日志
  • Ubuntu下用Lean源码编译openwrt及一行命令u盘启动openwrt安装x86硬盘上
  • JavaScript Number 对象
  • 【原创】java+swing+mysql银行ATM管理系统
  • 博弈论--总结
  • AMBA低功耗接口规范(Low Power Interface Spec)
  • matlab-汽车四分之一半主动悬架模糊控制
  • 【安全加密】通信加密算法介绍
  • kubernetes教程 --组件详细介绍
  • 数字化系统使用率低的原因剖析
  • <<Java开发环境配置>>7-Apache Tomcat安装教程环境变量配置IDEA配置
  • 互联网大厂测开面试记,二面被按地上血虐,所幸Offer已到手
  • 网络管理之设备上线技术的发展现状和趋势
  • SQL67 返回固定价格的产品