从数组中找到只出现一次的两个数

 1 import java.util.Arrays;
 2 
 3 public class Split {
 4     
 5     public static void main(String[] args)
 6     
 7     {
 8         
 9         int data[]={2,4,3,5,6,5,2,6};
10         int[] num1 = new int[data.length];
11         int[] num2= new int[data.length];
12         FindApperanceOnce(data,num1,num2);
13         /*System.out.println(Arrays.toString(num1));
14         System.out.println(Arrays.toString(num2));*/
15         /*find(num1);
16         find(num2);*/
17         
18     }
19     
20     
21     public static void FindApperanceOnce(int data[],int [] num1,int [] num2)
22     {
23         if(data ==null || data.length<2)
24             return;
25         int result = 0; //^
26         for(int i =0;i<data.length;i++)
27         {
28             result ^=data[i];//异或结果肯定不为0,因为有两个不相同的数字
29         }
30         int indexOf1 = FindFirstBitIs1(result);//找到第一个为1的位
31         System.out.println(result+"**"+indexOf1+"**");
32         for(int j=0;j<data.length;j++)
33         {
34             if(IsBit1(data[j],indexOf1)==1)
35             {
36                 num1 [j]^=data[j];  //将原数组根据第indexOf1位是不是1分为两个子数组
37             }
38             else
39                 num2[j] ^= data[j];
40         }
41         find(num1);
42         find(num2);
43         
44         
45     }
46 
47     private static int IsBit1(int num, int indexBit) {
48         // TODO Auto-generated method stub
49         num = num>>indexBit;
50         
51         return (num & 1);
52     }
53 
54     //找出数字num的二进制位中,第一个为1的位数。
55     private static int FindFirstBitIs1(int num) {
56         // TODO Auto-generated method stub
57         int indexBit = 0;
58         while((num&1)==0)
59         {
60             num>>=1;
61             ++indexBit;
62         }
63         return indexBit;
64     }
65     //从数组中找到唯一一个只出现一次的数字
66     private static void  find(int[] data)
67     {
68         int result =0;
69         for(int i=0;i<data.length;i++)
70         {
71             result^=data[i];
72         }
73         System.out.println(result);
74     }
75 }
原文地址:https://www.cnblogs.com/happinessqi/p/3512866.html