java写的程序提交时出现了运行超时问题,想问问我这个代码还能改不
问题描述:
本人刚学习不久,只会一些基础的东西,希望别弄特别深奥的东西,我怕看不懂
后面有代码和PTA上的运行结果截图。
import java.util.Scanner;
public class Main {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
int N = sc.nextInt(),i;
StringBuilder[] num1 = new StringBuilder[N];
int [] num2 = new int[N],num3 = new int[N];
for (i = 0; i < N; i++) {
num1[i] = new StringBuilder(sc.next());
num2[i] = sc.nextInt();
num3[i] = sc.nextInt();
}
int M = sc.nextInt();
int[] cxnum2 = new int[M];
for (i = 0; i < M; i++) {
cxnum2[i] = sc.nextInt();
for (int j = 0; j < N; j++) {
if (cxnum2[i] == num2[j]) {
System.out.println(num1[j] + " " + num3[j]);
}
}
}
}
}
答
1、没必要去定义StringBuilder数组
2、遍历查询的时候,找到了就break结束循环,否则很耗时间。
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
int N = sc.nextInt();
String[] num1 = new String[N];
int [] num2 = new int[N],num3 = new int[N];
for (int i = 0; i < N; i++) {
num1[i] =sc.next();
num2[i] = sc.nextInt();
num3[i] = sc.nextInt();
}
int M = sc.nextInt();
int[] cxnum2 = new int[M];
for (int i = 0; i < M; i++) {
cxnum2[i] = sc.nextInt();
for (int j = 0; j < N; j++) {
if (cxnum2[i] == num2[j]) {
System.out.println(num1[j] + " " + num3[j]);
break;
}
}
}
}
答
你这个编译软件是啥呀,黑色的好酷哦,好像很多程序员用的都是这种