欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

数组中只出现一次的数字(牛客网二十四)

程序员文章站 2022-03-08 15:57:23
...

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

//num1,num2分别为长度为1的数组。传出参数
//将num1[0],num2[0]设置为返回结果
public class Solution {
    public void FindNumsAppearOnce(int [] array,int num1[] , int num2[]) {
        int len =array.length;
        if(len<2)
            return;
        
        int resultor=array[0];
        for(int i=1;i<len;i++)
        {
            resultor^=array[i];
        }
        
        int n=findfirstbit(resultor);
        
        for(int j=0;j<len;j++)
        {
            if(isbit1(n,array[j])==1)
            num1[0]^=array[j];
            else
            num2[0]^=array[j];
        }
        
    }
  int isbit1(int n,int num)
  {
      int num1=1;
      while(n!=1)
      {
          num=num>>1;       
          n--;
      }
      
      return 1#
      
  }
    
  int findfirstbit(int resultor)
  {
      int bit=0;
      int count=0;
      while(bit==0)
      {
         bit= resultor&1;
         resultor=resultor>>1;
         count++;
      }
      return count;
  }
}