请各位大佬帮忙看看,为什么同样的程序再oj系统上提交Java会超时c语言不会
这是问题
以下分别是c语言代码与Java代码
c语言
#include<stdio.h>
int main()
{
int K;
scanf("%d",&K);
while(K--)
{
int n,sum=1;
scanf("%d",&n);
int stra[100001],strb[100001];
for(int i=0; i<n; i++)
{
scanf("%d",&stra[i]);
}
strb[0]=stra[0];
for(int i=1; i<n; i++)
{
int flag=1;
for(int j=0; j<sum; j++)
{
if(stra[i]==strb[j])
{
flag=0;
break;
}
}
if(flag==1)
{
strb[sum]=stra[i];
sum+=1;
}
}
if(sum>4)
printf("No\n");
else if(sum<4)
printf("Yes\n");
else
{
for(int i=0;i<3;i++)
{
for(int j=0;j<3-i;j++)
{
if(strb[j]>strb[j+1])
{
int q=strb[j];
strb[j]=strb[j+1];
strb[j+1]=q;
}
}
}
if((strb[3]-strb[1])==((strb[2]-strb[0])))
printf("Yes\n");
else printf("No\n");
}
}
return 0;
}
Java
import java.util.Scanner; public class Main{ public static void main(String[] args) { Scanner in = new Scanner(System.in); int k=in.nextInt(); while(k>0){ int n= in.nextInt(); int sum=1; int[] stra=new int[100001]; int[] strb=new int[100001]; for (int i = 0; i < n; i++) { stra[i]= in.nextInt(); } strb[0]=stra[0]; for(int i=1; i<n; i++) { int flag=1; for(int j=0; j<sum; j++) { if(stra[i]==strb[j]) { flag=0; break; } } if(flag==1) { strb[sum]=stra[i]; sum+=1; } } if(sum>4) System.out.println("No"); else if(sum<4) System.out.println("Yes"); else { for(int i=0;i<3;i++) { for(int j=0;j<3-i;j++) { if(strb[j]>strb[j+1]) { int q=strb[j]; strb[j]=strb[j+1]; strb[j+1]=q; } } } if((strb[3]-strb[1])==((strb[2]-strb[0]))) System.out.println("Yes"); else System.out.println("No"); } k--; } } }