1. 程式人生 > >找出陣列中出現一次兩個數,其他數字都出現偶數次

找出陣列中出現一次兩個數,其他數字都出現偶數次

{
      unsigned 
int flag =1;
      
while(flag) //求異或結果,最低的為1的二進位制位,根據此位是否為1,將元素分為兩組,兩個不同的元素,在此位必然,一個為1,一個為0 
{
        
if(flag&sum)
           
break;
        flag 
= flag <<1 ;        
      }

      
//下面將flag與每個元素相求與,根絕結果是否為1,將其化為兩個陣列
      
//分別計算每個陣列的異或結果,並將結果,儲存分別儲存在one和two中。
      one = two =0 ;//0與任何數異或都為其自身,所以初始化的時候,應該初始化為0 

for(int i =0 ; i < N ;i++ )
      
{
        
if(a[i] & flag) 
        
{
                one 
^= a[i] ;
        }

        
else
        
{
             two 
^= a[i] ;
        }
        
      }

      
  }