码迷,mamicode.com
首页 > 编程语言 > 详细

数组中只出现一次的数字

时间:2015-11-04 21:27:29      阅读:245      评论:0      收藏:0      [点我收藏+]

标签:

题目描述

任何一个数字异或它自己都等于0

一个整型数组里除了两个数字之外,其他的数字都出现了两次。请写程序找出这两个只出现一次的数字。
 1 class Solution {
 2 public:
 3     int f(int num){
 4          int s=0;
 5          while((num&1)==0)
 6              {
 7              num=num>>1;
 8              s++;
 9          }
10          return s;
11         
12     }
13     bool g(int num,int x){
14          num= num>>x;
15         if(( num&1)==0)
16               return false;
17         else
18               return true;
19         
20     }
21     void FindNumsAppearOnce(vector<int> data,int* num1,int *num2) {
22          int len=data.size();
23         if(len<2)
24               return;
25         int s=0,i;
26         for(i=0;i<len;i++)
27              s^=data[i];
28         int d=f(s);
29         *num1=*num2=0;
30         for(i=0;i<len;i++)
31             {
32              if(g(data[i],d))
33                    *num1^=data[i];
34              else
35                    *num2^=data[i];
36         }
37     
38     }
39 };

 

数组中只出现一次的数字

标签:

原文地址:http://www.cnblogs.com/cancangood/p/4937287.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!