73. 2つの数の配列は一度だけ表示されます

 

 

XORはそれのビデオを参照してください。2つの数の73の配列は一度だけ表示されAcWing

https://www.acwing.com/solution/acwing/content/1324/

これは2×の数、Yと仮定されます

1.排他的あるいはすべての数の、同じ数2後の排他的論理和は0です。結果はx⊕yです。

前記排他的論理和演算の性質は:進数0101の場合、bは二進数1011である。a⊕b= 1110のみが2つのビットを同時に比較結果1ない、結果はそうでなければ0です。

確かに、結果はビットx⊕ykが1であるあります。k番目のビットを使用して1であり、アレイは、2種類のアレイに分割され、アレイは、M Z = 1であり、nは他のアレイZ = 0です。

xおよびyは、Mは、Nです。

それぞれ3 M、Nは、排他的論理和素子でX、Yを得ることができます。

 

クラスのソリューション{
 パブリック
    ベクトル < int型 > findNumsAppearOnce(ベクトル< int型 >&NUMS){
         int型の SUM = 0 ;
         (オートX:NUMS)SUM = ^ X;
         int型 K = 0 ;
         しばらく((SUM&>> K!1))K ++;   // Kが1で異なるものでxまたはyに格納されている
        INTまず= 0 ;
         のための(自動X:NUMS)
             IF(X&K >> 1 
                まず ^ = X。//kの最初のセットは、時間が現れるの最初の数xを得るために、排他的OR 1ビット
        戻りベクトル< INT > {まず、第1の和^を}; // 第二の数を得るためには1回発生SUM ^まず、 Y 
    } 

}。

 

おすすめ

転載: www.cnblogs.com/make-big-money/p/12339887.html