题目链接:
PAT1041
本题的思路在于使用第一个数组来标记出现的数,另一个数组标记对应数出现的次数,使用空间换时间的方式来通过两组超时用例
值得注意的是这一题使用java代码仍然无法通过
C语言代码(ac代码):
#include <stdio.h>
int input[100005]={0};
int result[100005]={0};
int main(){
int n;
int flag=0;
int i;
scanf("%d",&n);
for(i=0;i<n;i++){
scanf("%d",&input[i]);
result[input[i]]++;
}
for(i=0;i<n;i++){
if(result[input[i]]==1){
printf("%d",input[i]);
flag=1;
break;
}
}
if(!flag) printf("None");
return 0;
}
java代码(超时):
import java.util.Scanner;
public class Main {
static int[] input;
static int[] result=new int[100005];
public static void main(String[] args) {
Scanner sc=new Scanner(System.in);
int N=sc.nextInt();
input=new int[N];
for(int i=0;i<N;i++){
input[i]=sc.nextInt();
result[input[i]]++;
}
int flag=0;
for(int i=0;i<N;i++){
if(result[input[i]]==1){
System.out.println(input[i]);
flag=1;
break;
}
}
if(flag==0) System.out.println("None");
}
}