주제 :
숫자의 독특한 배열에만 나타납니다.
숫자의 배열에 추가 한 번만 나타납니다에서 다른 숫자는 세 번 등장했다.
한 번만 표시되는 번호를 찾을 수 있습니다.
해결 방법 :
숫자를 세 번, 다음이 세 배 진 각 비트 표현 나타나면 (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 };