PAT(Basic Level)1041 題目模擬火星獨特的彩票規則:從 1 到 10^4 的數字中投注,第一個投注唯一數字者獲勝。給定 N 個投注號碼,需找出第一個只出現一次的數字;若不存在則輸出 "None"。
核心任務是統計每個數字的出現次數,並按輸入順序找到第一個計數為 1 的數字。數據範圍:N ≤ 10^5,數字值 ≤ 10^4。此範圍允許使用陣列直接統計頻率,無需雜湊表。
count 初始化為 0count[num[i]]++count[num[i]] == 1 的數字並輸出#include <stdio.h>
int main() {
int n;
scanf("%d", &n);
int num[100000];
int count[10001] = {0}; // 數字範圍 1~10000
for(int i = 0; i < n; i++) {
scanf("%d", &num[i]);
count[num[i]]++;
}
for(int i = 0; i < n; i++) {
if(count[num[i]] == 1) {
printf("%d\n", num[i]);
return 0;
}
}
printf("None\n");
return 0;
}
count[10001] 覆蓋 1~10000,下標 0 不用輸入 1:7 5 31 5 88 67 88 17
統計:5→2, 31→1, 88→2, 67→1, 17→1
按序查找:5(2)→31(1) → 輸出 31
輸入 2:5 888 666 666 888 888
統計:888→3, 666→2
無計數為 1 的數字 → 輸出 None