当前位置: 首页 > 知识库问答 >
问题:

我的最大1、最大2、最大3数的代码正在通过所有测试用例,但一个测试用例显示MLE错误,有人知道如何通过吗?

公西苗宣
2023-03-14

给定一个大小为N的数组A,您需要找到它的最大值、第二最大值和第三最大值元素。尝试在每个测试用例中以O(N)求解它

输入

输入的第一行包含测试用例的数量T。

对于每个测试用例,输入的第一行包含一个整数N,表示数组A中的元素数。下一行包含A的N个(空格分隔)元素。

Constraints:
1 <= T <= 100
3 <= N <= 10^6
1 <= A[i] <= 10^9

在我的代码中,除了一个显示MLE的测试用例之外,每个测试用例都通过了。

import java.io.*; // for handling input/output
import java.util.*; // contains Collections framework

// don't change the name of this class
// you can add inner classes if needed
class Main {
    public static void main (String[] args) {
                      // Your code here
                      Scanner sc = new Scanner(System.in);
                      int size = sc.nextInt();
                   
                        while(size>0){
                           int n = sc.nextInt();
                          int myarray[] = new int [n];
                          for(int j=0; j<n;j++) {
                          myarray[j]= sc.nextInt();
                      }
                      printNumber(myarray);
                      size--;
                        }                
    }
    public static void printNumber(int [] myarray){
        int first=0;
        int second=0;
        int third=0;
        
        for(int i=0;i<myarray.length;i++){

            if (myarray[i] > first){
               third=second;
               second=first;
               first=myarray[i];
      }
      else if (myarray[i] > second){
         third = second;
         second = myarray[i];
      }
      else if (myarray[i] > third)
         third = myarray[i];
   }
   System.out.println(first+" "+second+" "+third);
        }
    }

共有1个答案

祁彬
2023-03-14
//you only need to save the first second and third numbers not all of them
int first=0;

int second=0;
int third=0;
for(int i = 0;i<n;i++){
        int curNum = sc.nextInt();
        if (curNum > first){
               third=second;
               second=first;
               first=curNum;
      }
      else if (curNum > second){
         third = second;
         second = curNum;
      }
      else if (curNum > third)
         third = curNum;
   }
}
 类似资料: