PAT-ADVANCED1041——Be Unique
阿新 • • 發佈:2018-12-19
題目描述:
題目翻譯:
1041 獨一無二
對火星人來說,獨一無二是十分重要的,甚至它們的抽獎方式也是獨一無二的。應的規則很簡單:每個人壓一個[1, 10 ^ 4]範圍內的數字。第一個壓到了獨一無二數字的人贏。舉個例子,如果有7個人,他們依次壓了{5 31 5 88 67 88 17},那麼第二個人,即壓31的人贏了。
輸入格式:
每個輸入檔案包含一個測試用例。對每個測試用例一行中以一個正整數N(<= 10 ^ 5)開頭,緊跟著N個數代表這N個人的壓法。數字由一個空格分隔。
輸出格式:
對每個測試用例,在一行中打印出獲勝者的數字。如果沒有任何人獲勝,列印None。
輸入樣例1:
7 5 31 5 88 67 88 17
輸出樣例1:
31
輸入樣例2:
5 888 666 666 888 888
輸出樣例2:
None
知識點:計數
思路:開一個大小為10001的陣列來記錄某個數字的出現次數
由於題目要求是第一個壓到了獨一無二數字的人贏,因此我們還需要用一個vector<int> nums來記錄數字的順序。
時間複雜度是O(N)。空間複雜度是O(10001)。
C++程式碼:
#include<iostream> #include<vector> using namespace std; int main(){ int flag[10001]; fill(flag, flag + 10001, 0); int N; scanf("%d", &N); int num; vector<int> nums; for(int i = 0; i < N; i++){ scanf("%d", &num); nums.push_back(num); flag[num]++; } int i = 0; for(; i < N; i++){ if(flag[nums[i]] == 1){ printf("%d\n", nums[i]); break; } } if(i >= N){ printf("None\n"); } return 0; }
C++解題報告: