Chinaunix首页 | 论坛 | 博客
  • 博客访问: 359213
  • 博文数量: 60
  • 博客积分: 15
  • 博客等级: 民兵
  • 技术积分: 1138
  • 用 户 组: 普通用户
  • 注册时间: 2012-03-20 16:18
个人简介

最多140个字

文章分类

全部博文(60)

文章存档

2016年(1)

2015年(34)

2014年(25)

分类: C/C++

2015-08-17 21:48:59


  1. /**
  2.  * Return an array of size *returnSize.
  3.  * Note: The returned array must be malloced, assume caller calls free().
  4.  */
  5.  int testbits(unsigned int tmp)
  6.  {
  7.      int i=0;
  8.      while((tmp&01)==0x00)//注意优先级;
  9.      {
  10.          
  11.         tmp=tmp>>1;
  12.         i++;
  13.      }
  14.      
  15.      return i;
  16.  }
  17.  int testnbit(unsigned int tmp,int n)
  18.  {
  19.      while(n--)
  20.      {
  21.          tmp=tmp>>1;
  22.      }
  23.      if((tmp&0x01)==0x01)
  24.         return 1;
  25.     else
  26.         return 0;
  27.         
  28.  }
  29. int* singleNumber(int* nums, int numSize, int* returnSize) {
  30.     int i=0;
  31.     int tmp=0;
  32.     for(;i<numSize;i++)
  33.     {
  34.         tmp=tmp^nums[i];
  35.     }
  36.    
  37.     int n=testbits(tmp);
  38.      
  39.     int lhs=0;
  40.     int rhs=0;
  41.     for(i=0;i<numSize;i++)
  42.     {
  43.         if(testnbit(nums[i],n))
  44.             lhs=lhs^nums[i];
  45.         else
  46.             rhs=rhs^nums[i];
  47.     }
  48.     int *arr=malloc(sizeof(int)*2);
  49.     arr[0]=lhs;
  50.     arr[1]=rhs;
  51.     *returnSize=2;
  52.     return arr;
  53. }
阅读(3021) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~