//找出数组中两个只出现一次的数,其它数都成对存在
#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个)相关推荐

  1. 找出单身狗_只出现一次的数字Ⅲ

    给定一个整数数组 nums,其中恰好有两个元素只出现一次,其余所有元素均出现两次. 找出只出现一次的那两个元素.你可以按 任意顺序 返回答案. 你的算法应该具有线性时间复杂度.你能否仅使用常数空间复杂 ...

  2. 算法题:“找出单身狗”--找出一个数组中只出现一次的数字

    题目:一个数组中只有两个数字是出现一次,其他所有数字都出现了两次. 编写一个函数找出这两个只出现一次的数字. 解题过程以及思路:(思路在代码中以注释形式给出) //一个数组中只有两个数字是出现一次,其 ...

  3. C语言找出两个字符串唯一不同的一个字符(附完整源码)

    C语言找出两个字符串唯一不同的一个字符 C语言找出两个字符串唯一不同的一个字符完整源码(定义,实现,main函数测试) C语言找出两个字符串唯一不同的一个字符完整源码(定义,实现,main函数测试) ...

  4. C语言——找出矩阵最大值

    C语言--找出矩阵最大值 问题描述: 代码: # include <stdio.h>int main() {int a[3][4];int i, j;int maxi = 0;int ma ...

  5. C语言找出数组中最小的数和它的下标

    C语言找出数组中最小的数和它的下标,然后把它和数组中最前面的元素对换位置 #include <stdio.h> int main() {int A[10]={3,7,5,9,10,2,1, ...

  6. 村子里有50个人,每人有一条狗,在这50条狗中有病狗(这种病不传染),于是人们要找出病狗。

    IBM公司向来以高素质人才作为企业持续竞争力的保证.进入IBM公司是差不多每个IT人的梦想.下面这条IBM公司的面试题,给大家试试看,看看是否具备进入IBM的实力! 村子里有50个人,每人有一条狗,在 ...

  7. c语言找出一个数组中出现次数最多的那个元素,c语言找出数组中出现次数最多地那个元素...

    matlab中如何找出不同维度矩阵出现次数最多的数组并记录其个数 首先是胞矩阵中的序列问题,不妨假设AA{1}是一个多行两列的数据,AA{2}同例.程序如下clcclearallAA{1}=[12;2 ...

  8. C语言找出4个最大和4个最小数,济南大学C语言程序设计教案:C语言实验课程第四课.doc...

    济南大学C语言程序设计教案:C语言实验课程第四课 C语言实验课程第四课 实验一 数组与函数.数组与指针 一.实验目的 1 掌握数组名作为函数参数的含义.使用方法. 2 掌握多维数组作为函数参数的使用方 ...

  9. c语言找出成绩的最大,C语言 求每个学生、每门课的平均成绩并找出最大值

    C语言 求每个学生.每门课的平均成绩并找出最大值 for(i=0;i { y=0; for(j=0;j { y=y+a[j][i]; } c[i]=y/3; printf("第%d门课的平均 ...

最新文章

  1. HDU 1847 Good Luck in CET-4 Everybody!(组合博弈)
  2. java高并发(二十)HashMap与ConcurrentHashMap
  3. 京东JDHBase异地多活实践
  4. 加载resnet18的代码
  5. 下定决心博客搬家(再见csdn,For my oschina!)
  6. Linq原理相关(隐式类型var、匿名类型、实例化类、集合初始化)
  7. Asp.Net Mvc4分页,扩展HtmlHelper类
  8. 编译NVIDIA之Video_Codec_SDK_9.1.23之Sample
  9. python win32模块详解_Windows平台Python编程必会模块之pywin32介绍
  10. Thrift 个人实战--Thrift RPC服务框架日志的优化
  11. c语言入门程序下载,c语言入门自学软件下载
  12. k线图中的三条线没了怎么办?
  13. 手把手教你使用XUI的正确姿势
  14. 量化新手初识Campisi模型
  15. ESP8266最小系统
  16. mysql client_multi_statements_MySQL中CLIENT_MULTI_STATEMENTS的用法
  17. micro、macro、weighted、sample区别
  18. python项目实战:实现游戏敏感词汇过滤器
  19. U281819 糟心的语文课
  20. cpu的主频、外频和倍频

热门文章

  1. 在原先安装ubuntu桌面版系统的联想一体机安装win10系统
  2. @DateTimeFormat和@JsonFormat介绍
  3. 2023实体消费市场火爆!商圈排长龙,一日千单不是梦!
  4. windows java path_Windows下 Java配置环境变量
  5. arduino中断函数的学习——定时中断(MsTimer2)
  6. 地图api - 批量转换坐标经纬度
  7. pandas如何保存在excel里面_你好Python!再见Excel?
  8. ORA-01033: ORACLE正在初始化或关闭
  9. Word怎么输入美元符号
  10. 最新CSDN博客积分规则和获取积分方法【官方的说明】