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]);
                }
            }
        }
    }
}

img

img

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;
                }
            }
        }
    }

你这个编译软件是啥呀,黑色的好酷哦,好像很多程序员用的都是这种