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

找单身狗2

找单身狗2

在这里插入图片描述

之前遇到类似的题目的思路:
在这里插入图片描述

首先写出这些数的二进制形式:

在这里插入图片描述

核心原理

在这里插入图片描述

接下来的问题是怎么把5和6分开来?

在这里插入图片描述

这里是最后一位进行比较,按位异或是相同为0,相异为1,最后一位从上图看出是1,说明这两个数不一样,就可以让这两个数被分开

这道题的难点:

1.怎么把它分成两组?

2.为什么分成两组?

3.根据什么标准分成两组?

接下来是代码过程:

void FindNum(int arr[],int n,int* pNum1,int*pNum2)
{//1.对整个数组进行异或处理int tmp=0;for(int i=0;i<n;i++){tmp^=arr[i];}
}
//2.tmp接受两个不同数字异或的结果
int pos=-1;
for(int i=0;i<32;i++)
{if(((tmp>>i)&1)==1){pos=i;break;}
}
if(pos==-1)
{*pNum1=-1;*pNum2=-1;return;
}
for(int i=0;i<n;i++)
{if((arr[i]>>pos)&1==1){*pNum1^=arr[i];}else{*pNum2^=arr[i];}
}
int main()
{int arr[]={1,2,3,4,5,1,2,3,4,6};int len=sizeof(arr)/sizeof(arr[0]);int ret1=0;int ret2=0;FindNum(arr,len,&ret1,&ret2);printf("%d %d",ret1,ret2);return 0;
}

运行结果

在这里插入图片描述

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

相关文章:

  • element-ui将组件默认语言改为中文
  • SuperMap iClient3D 11i(2023) SP1 for Cesium 调整
  • 保姆级小白就业人工智能(视频+源码+笔记)
  • 微信小程序,分享和反馈功能
  • 数据安全未来之路,天空卫士荣誉领榜《中国数据安全50强(2024)》
  • CAD二次开发(10)-单行文字的添加+图形修改
  • 【SpringBoot集成Spring Security】
  • docker部署dm数据库
  • Shell中执行.sh文件的常见方式
  • 超分辨率重建——2022冠军RLFN网络推理测试(详细图文教程)
  • 国际荐酒师香港协会受邀参加2024年美国独立日庆祝活动
  • (微服务实战)聚合支付系统商户线上聚合收银台接口设计
  • 【漏洞复现】CRMEB开源电商系统 /api/products SQL注入漏洞(CVE-2024-36837)
  • 摄像头图像矫正的表格生成方法
  • 【Arc gis】Arc gis出现ERROR 999999问题的解决办法
  • 优化 Flutter 应用开发:探索 ViewModel 的威力
  • Android开发系列(四)Jetpack Compose之Button
  • Java17 --- RabbitMQ之插件使用
  • 6.18总结
  • 【ARM Cache 及 MMU 系列文章 1.4 -- 如何判断 L3 Cache 是否实现?】
  • 打印mybatis的sql日志
  • QT day4(对话框 事件机制)
  • 序列化与反序列化漏洞实例
  • 6、while循环 - 习题解析
  • ReentrantLock可重入锁
  • 如何秒杀系统架构设计
  • 深度神经网络——什么是降维?
  • SpringMVC—RequestMapping注解
  • Java线程池基本概念
  • 智能车联网安全发展形势、挑战