為什么pta這個題有一個過不了,求解


uj5u.com熱心網友回復:
超時就是太慢了嘛,想辦法提高效率。好好挖掘一下陣列的作用,降低回圈次數,不要有二重回圈。
uj5u.com熱心網友回復:
供參考:#include <stdio.h>
int main(int argc, char* argv[])
{
int n,flag=1;
scanf("%d",&n);
int *a = new int[n];
int *b = new int[n];
memset(a,0,sizeof(int)*n);
memset(b,0,sizeof(int)*n);
for(int i=0;i<n;i++)
scanf("%d",&a[i]);
for(int i=0;i<n;i++){
for(int j=0;j<n;j++)
if(a[i] == a[j])
b[i]++;
}
for(int i=0;i<n;i++)
if(b[i]==1){
printf("%d\n",a[i]);
flag=0;
break;
}
if(flag) printf("None\n");
delete []a;
delete []b;
return 0;
}
uj5u.com熱心網友回復:
盡量不要在C代碼里面混入C++語法嘛。況且這個并不解決超時問題。
uj5u.com熱心網友回復:
可以這樣試試:
#include <stdio.h>
int a[100000], b[100000];
int main()
{
int n,i;
scanf("%d", &n);
for (i = 0; i < n; i++)
{
scanf("%d", a + i);
b[a[i]]++;
}
for (i = 0; i < n; i++)
{
if (b[a[i]] == 1)
{
printf("%d\n", a[i]);
return 0;
}
}
printf("None\n");
return 0;
}
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/243428.html
標籤:C語言
上一篇:藍橋杯基礎練習
下一篇:萌新求問
