C语言—找出单身狗(2个)
//找出数组中两个只出现一次的数,其它数都成对存在
#include<stdio.h>
int main()
{int arr[10] = { 5,7,6,1,2,6,7,2,3,1 };int ret = 0;for (int i = 0; i < 10; i++){ret ^= arr[i];}int n = 0;//num的第n位为1while (n < 32){if (ret & (1 << n))break;elsen++;}int a = 0, b = 0;for (int i = 0; i < 10; i++){if (arr[i] & (1 << n))a ^= arr[i];elseb ^= arr[i];}printf("这两个单身狗是:%d %d", a, b);return 0;
}
思路:先设一个数ret,将它与这个数组中所有数都异或,就得到这两个数的异或,接下来只需要将这两个数分开即可,分开的方法是将它们分成两组,再设两个变量,将他们分别以两组异或就得到这两个数了,分开的方法是找到这两个数二进制位中不同的一位,根据这一位是0还是1分成两组,这样的话那两个数就分成了两组
首先要先讲一下位移操作符‘<<’和'>>',比如说“1<<1”表示1的二进制向左移动一位,实质上就是在原来的基础上乘一个2,相反,‘>>’就是在原来的基础上除以2.
结果如图所示:
如果不是考虑到空间和时间复杂度,其实还有很多方法,这样的方法我也没想到,我一开始是设了好几个变量,再用了多次循环才得出结果,说实话算法真的挺难,但是很有锻炼思维的价值。
C语言—找出单身狗(2个)相关推荐
- 找出单身狗_只出现一次的数字Ⅲ
给定一个整数数组 nums,其中恰好有两个元素只出现一次,其余所有元素均出现两次. 找出只出现一次的那两个元素.你可以按 任意顺序 返回答案. 你的算法应该具有线性时间复杂度.你能否仅使用常数空间复杂 ...
- 算法题:“找出单身狗”--找出一个数组中只出现一次的数字
题目:一个数组中只有两个数字是出现一次,其他所有数字都出现了两次. 编写一个函数找出这两个只出现一次的数字. 解题过程以及思路:(思路在代码中以注释形式给出) //一个数组中只有两个数字是出现一次,其 ...
- C语言找出两个字符串唯一不同的一个字符(附完整源码)
C语言找出两个字符串唯一不同的一个字符 C语言找出两个字符串唯一不同的一个字符完整源码(定义,实现,main函数测试) C语言找出两个字符串唯一不同的一个字符完整源码(定义,实现,main函数测试) ...
- C语言——找出矩阵最大值
C语言--找出矩阵最大值 问题描述: 代码: # include <stdio.h>int main() {int a[3][4];int i, j;int maxi = 0;int ma ...
- C语言找出数组中最小的数和它的下标
C语言找出数组中最小的数和它的下标,然后把它和数组中最前面的元素对换位置 #include <stdio.h> int main() {int A[10]={3,7,5,9,10,2,1, ...
- 村子里有50个人,每人有一条狗,在这50条狗中有病狗(这种病不传染),于是人们要找出病狗。
IBM公司向来以高素质人才作为企业持续竞争力的保证.进入IBM公司是差不多每个IT人的梦想.下面这条IBM公司的面试题,给大家试试看,看看是否具备进入IBM的实力! 村子里有50个人,每人有一条狗,在 ...
- c语言找出一个数组中出现次数最多的那个元素,c语言找出数组中出现次数最多地那个元素...
matlab中如何找出不同维度矩阵出现次数最多的数组并记录其个数 首先是胞矩阵中的序列问题,不妨假设AA{1}是一个多行两列的数据,AA{2}同例.程序如下clcclearallAA{1}=[12;2 ...
- C语言找出4个最大和4个最小数,济南大学C语言程序设计教案:C语言实验课程第四课.doc...
济南大学C语言程序设计教案:C语言实验课程第四课 C语言实验课程第四课 实验一 数组与函数.数组与指针 一.实验目的 1 掌握数组名作为函数参数的含义.使用方法. 2 掌握多维数组作为函数参数的使用方 ...
- c语言找出成绩的最大,C语言 求每个学生、每门课的平均成绩并找出最大值
C语言 求每个学生.每门课的平均成绩并找出最大值 for(i=0;i { y=0; for(j=0;j { y=y+a[j][i]; } c[i]=y/3; printf("第%d门课的平均 ...
最新文章
- HDU 1847 Good Luck in CET-4 Everybody!(组合博弈)
- java高并发(二十)HashMap与ConcurrentHashMap
- 京东JDHBase异地多活实践
- 加载resnet18的代码
- 下定决心博客搬家(再见csdn,For my oschina!)
- Linq原理相关(隐式类型var、匿名类型、实例化类、集合初始化)
- Asp.Net Mvc4分页,扩展HtmlHelper类
- 编译NVIDIA之Video_Codec_SDK_9.1.23之Sample
- python win32模块详解_Windows平台Python编程必会模块之pywin32介绍
- Thrift 个人实战--Thrift RPC服务框架日志的优化
- c语言入门程序下载,c语言入门自学软件下载
- k线图中的三条线没了怎么办?
- 手把手教你使用XUI的正确姿势
- 量化新手初识Campisi模型
- ESP8266最小系统
- mysql client_multi_statements_MySQL中CLIENT_MULTI_STATEMENTS的用法
- micro、macro、weighted、sample区别
- python项目实战:实现游戏敏感词汇过滤器
- U281819 糟心的语文课
- cpu的主频、外频和倍频
热门文章
- 在原先安装ubuntu桌面版系统的联想一体机安装win10系统
- @DateTimeFormat和@JsonFormat介绍
- 2023实体消费市场火爆!商圈排长龙,一日千单不是梦!
- windows java path_Windows下 Java配置环境变量
- arduino中断函数的学习——定时中断(MsTimer2)
- 地图api - 批量转换坐标经纬度
- pandas如何保存在excel里面_你好Python!再见Excel?
- ORA-01033: ORACLE正在初始化或关闭
- Word怎么输入美元符号
- 最新CSDN博客积分规则和获取积分方法【官方的说明】