안전의 서비스를 증명하기 - 04 2 차원 배열을 찾기

주제 :

숫자의 독특한 배열에만 나타납니다.
숫자의 배열에 추가 한 번만 나타납니다에서 다른 숫자는 세 번 등장했다.
한 번만 표시되는 번호를 찾을 수 있습니다.

 

해결 방법 :

숫자를 세 번, 다음이 세 배 진 각 비트 표현 나타나면 (0 또는 1). 셋 모두, 각을 표현을 표시하고 3으로 나눌 수 있습니다 경우 각 이진수의 각 비트는 추가 할 수 있습니다.
각각은 우리가 진 표현의 배열을 가지고 모든 숫자를 추가합니다. (3)에 의해 비트 나눌 후 한번만 0 하나의 대응하는 이진 표현에서 나타나는 수 있다면, 그렇지 않으면 1이다.

 

1  솔루션
 2-  {
 3  공개 :
 4      INT findTheOnlyNum (벡터 < INT > 데이터)
 (5)      {
 도 6          의 경우 (data.size () == 0 ) 복귀  0 ;
7          (자동 A : 데이터) calTheBits (a);
8          INT의 입술 = 0 ;
도 9          에 대해 ( int로 I = 0 ; I는 < 32 ++; I)
 (10)              의 경우 (비트 [I] % 3 == 1) 입술 + = POW ( 2 , I);
11          리턴 고해상도;
12      }
 13  개인 :
 14      INT의 비트 [ 32 ] = { 0 };
(15)      보이드 calTheBits ( INT NUM)
 16      {
 17          INT의 N = 1 ;
(18)          에 대한이 ( 값 int = 1을 0 ; i가 < 32 ; ++ I)
 19          {
 20              의 경우 (NUM 및 n)은 [I] 비트 ++ ;
(21)              N = N << 1;
22          }
 23      }
 24 };

 

추천

출처www.cnblogs.com/zzw1024/p/11707762.html