当然如果这个问题是只有一个不同的数,其他数字成对相同,那么就是把所有数字异或就得出这个数了

这次是有两个只出现一次的数字,其他数字都成对相同

1)先把所有数都异或得到数t

2)算出t的二进制第一个1的位置flag

3)将所有数根据二进制flag位置是否为1分成两组b1[],b2[] (此时每组数字的个数一定是奇数)

4)将b1组异或得到ans1,将b2组异或得到ans2

#include<iostream>
#include<stdio.h>
using namespace std;
#define isset(a,n) a&(1<<(n))
#define N 1000
int main(){int t,c,i,b[N],b1[N],b2[N],flag,cou1,cou2,ans1,ans2;while(cin>>c,c){if(c%2!=0){cout<<"c必须为偶数"<<endl;continue;}cin>>b[0];t=b[0];for(i=1;i<c;i++){cin>>b[i];t^=b[i];}flag=0;for(i=0;i<32;i++)if(isset(t,i)){flag=i;break;}cou1=cou2=0;for(int i=0;i<c;i++){if(isset(b[i],flag))b1[cou1++]=b[i];elseb2[cou2++]=b[i];}ans1=b1[0];ans2=b2[0];for(i=1;i<cou1;i++)ans1^=b1[i];for(i=1;i<cou2;i++)ans2^=b2[i];cout<<ans1<<" "<<ans2<<endl;}}

一串数字中有两个只出现一次的数字其余都是成对相同,求这两个数相关推荐

  1. 找出数组中两个只出现一次的数字

    题目:一个整型数组里除了两个数字之外,其他的数字都出现了两次.请写程序找出这两个只出现一次的数字 通过这道题感觉位运算很强大~这道题利用异或的几个性质:任何数与其本身异或值都为0,异或运算满足交换律. ...

  2. 算法题:找出整数数组中两个只出现一次的数字

    问题:一个整数数组里除了两个数字之外,其他的数字都出现了两次.请写程序找出这两个只出现一次的数字.要求时间复杂度为O(n),空间复杂度为O(1). 分析:这是一个很新颖的关于位运算的题目. 首先考虑这 ...

  3. 一个整型数组里除了两个数字之外,其他的数字都出现了两次。请写程序找出这两个只出现一次的数字

    package demo;import java.util.Arrays;/** 题目描述 一个整型数组里除了两个数字之外,其他的数字都出现了两次.请写程序找出这两个只出现一次的数字.*/ //num ...

  4. 一个数组中只有两个数字是出现一次,其他所有数字都出现了两次。 编写一个函数找出这两个只出现一次的数字。

    一个数组中只有两个数字是出现一次,其他所有数字都出现了两次.编写一个函数找出这两个只出现一次的数字. 1.代码编写 2.结果 1.代码编写 代码如下(示例): #define _CRT_SECURE_ ...

  5. python找出只出现一次的数字_Python数组中只出现一次的数字

    任何一个数字异或他自己都等于0,0异或任何一个数都等于那个数.数组中出了两个数字之外,其他数字都出现两次,那么我们从头到尾依次异或数组中的每个数,那么出现两次的数字都在整个过程中被抵消掉,那两个不同的 ...

  6. 微策略2011校园招聘笔试题(找出数组中两个只出现一次的数字)

    1.8*8的棋盘上面放着64个不同价值的礼物,每个小的棋盘上面放置一个礼物(礼物的价值大于0),一个人初始位置在棋盘的左上角,每次他只能向下或向右移动一步,并拿走对应棋盘上的礼物,结束位置在棋盘的右下 ...

  7. 【算法14】找出数组中两个只出现一次的数字

    [题 目]一个整型数组中除了两个数字外,其他的数字都出现两次.请找出这两个只在数组中出现一次的数字.要求时间复杂度O(n),空间复杂度O(1). [思 路]首先我们考虑一个稍微简单点的情况:如果这个数 ...

  8. 算法:一个整型数组里除了两个数字之外,其他的数字都出现了两次。请写程序找出这两个只出现一次的数字。(异或符号的妙用)

    异或的性质: 1.交换律 2.结合律(即(a^b)^c == a^(b^c)) 3.对于任何数x,都有x^x=0,x^0=x 4.自反性 A XOR B XOR B = A xor  0 = A 算法 ...

  9. 2020-06-10:给定一个无序数组,里面数都是成双数的,只有一个数是成单数的,求这个数? 如果上面那题里面有两个单数,怎么求出来?

    1.异或 2.字典或集合 3.排序 golang语言采用异或方式,代码如下: package test22_singlenumber3import ("fmt""test ...

  10. 题目1256:找出两个只出现了一次的数字

    题目描述: 一个整型数组里除了两个数字之外,其他的数字都出现了两次.请写程序找出这两个只出现一次的数字. 输入: 输入的第一行包括一个整数N(1<=N<=1000). 接下来的一行包括N个 ...

最新文章

  1. 架构设计文章读后感7
  2. [转]NYOJ-511-移动小球
  3. centos 修改ssh默认端口号
  4. Wayland 源码解析之代码结构
  5. EntLib.com Forum / YAF 开源论坛--源码的目录结构(对分析代码很有帮助)
  6. oracle catalog命令,使用Catalog命令注册RMAN备份集
  7. 【2018蓝桥省赛A组C/C++】倍数问题(dp+滚动数组)
  8. 父与子的编程之旅 python 3_Python!帮我做一下选择呗:父与子的编程之旅 学习笔记(5) 2018-07-10...
  9. 有什么软件可以把视频上下拼接在一起?
  10. 为IT和互联网写历史
  11. qq里面cap字符_qq字符
  12. 腾讯云离线语音识别sdk
  13. 批量抠图,只需要这几行python代码!
  14. 金融信贷存量客户运营管理
  15. canvans——合并图片
  16. 全球与中国生物气溶胶监测仪市场深度研究分析报告
  17. 从腾讯的职级系统,看清自己的职场宿命(转载)
  18. 6种数据分析实用方法,终于有人讲明白了
  19. [C#]自定义修改文件夹颜色及图标含源码
  20. 10 | 介绍外包、外派、驻场、实施、ToB/ToC,外包真的那么不堪么?

热门文章

  1. Android 动态改变布局属性RelativeLayout.LayoutParams.addRule()
  2. Winson.Framework 1.5发布!
  3. Ubuntu18.04-安装opencv3.2.0_contrib
  4. my docker note
  5. encodeURI和uncodeURIComponent的介绍
  6. 利用 Logstash-input-jdbc同步sqlserver数据到elasticsearch
  7. 关于OpenFOAM的一些学习资料
  8. 利用jquery.form实现异步上传文件
  9. 几个IE与Firefox的兼容性问题 (一、网络转载)
  10. C#中计算两个时间的差