計蒜客————單獨的數字
阿新 • • 發佈:2019-01-27
- 28.46%
- 1000ms
- 65536K
給定一個數組 A,除了一個數出現一次之外,其餘數都出現三次。找出出現一次的數。
如:{1,2,1,2,1,2,7},找出 7。
你的演算法只能是線性時間的複雜度,並且不能使用額外的空間哦~
輸入格式
第一行輸入一個數 n(1≤n≤500),代表陣列的長度。
接下來一行輸入 n 個 int 範圍內(−2147483648…2147483647)的整數,表示陣列 A。保證輸入的數組合法。
輸出格式
輸出一個整數,表示陣列中只出現一次的數。
樣例輸入
4 0 0 0 5
樣例輸出
5
int 二進位制下共32位,每出現3個數,統計可得32位出現次數餘3為0,若只出現一次,其出現次數餘3為1,所以通過統計 各個 位數出現次數,判斷多出來什麼數。。
#include<iostream> #include<stdio.h> #include<stdlib.h> #include<math.h> using namespace std; int main() { int N; while(cin>>N) { int com[32]= {}; while(N--) { int temp; cin>>temp; for(int i=0; i<32; i++) com[i]+=((temp>>i)&1); } int pow2=1,ans=0; for(int i=0; i<32; i++) { ans+=pow2*(com[i]%3); pow2*=2; } cout<<ans<<endl; } return 0; }