#define N 100000 int main(){ int bet[N]={0},used[N/2]={0},n; while(scanf("%d", &n) != EOF && n <= 100000){ int i,j,t,rear=0; for(i=0;i<n;i++){ scanf("%d", &bet[i]); } int isbreak = 0; for(i=0;i<n;i++){ for(t=0;t<rear;t++){ if(bet[i] == used[t]) break; } if(t==rear){ isbreak = 1; for(j=i+1;j<n;j++){ if(bet[i] == bet[j]){ used[rear++] = bet[i]; isbreak = 0; break; } } if(isbreak) break; } } if(i == n) { printf("None"); } else { printf("%d", bet[i]); } } return 0; }
设立缓存区,超时。
#define N 100000 int main(){ int bet[N]={0},n; while(scanf("%d", &n) != EOF && n <= 100000){ int i,j,isbreak=0; for(i=0;i<n;i++){ scanf("%d", &bet[i]); } for(i=0;i<n;i++){ if(bet[i] != 0) { isbreak = 1; for(j=i+1;j<n;j++){ if(bet[i] == bet[j]){ bet[j] = 0; isbreak = 0; } } } if(isbreak) break; } if(i == n) { printf("None"); } else { printf("%d", bet[i]); } } return 0; }
一般算法,超时。
#include<stdio.h> #define N 100001 #define M 10001 int main(){ int bet[N]={0},people[M]={0},n; while(scanf("%d", &n) != EOF && n <= 100000){ int i,j; for(i=0;i<n;i++){ scanf("%d", &bet[i]); } for(i=0;i<n;i++){ people[bet[i]]++; } for(j=0;j<n;j++){ if(people[bet[j]] == 1){ break; } } if(j == n) { printf("None"); } else { printf("%d", bet[j]); } } return 0; }
相当于建立hash表,ok