伙计们,我遇到了一些数据结构方面的挑战,我真的不知道该如何更好地解决问题。
我有一个正确的解决方案,但时间超出了一些限制,代码应遵循N条指令:
它应该用数组,数组列表,堆栈,队列或树来解决。那就是我所做的,但是超过了6.51 s:
import java.util.*;
class Main {
public static void maxStack(int a, int val, Stack stack) {
switch (a) {
case 1:
stack.add(val);
break;
case 2:
if (stack.isEmpty()) {
break;
}
int c = (int) stack.pop();
break;
case 3:
Object o[] = stack.toArray();
Arrays.sort(o);
System.out.println(o[o.length - 1]);
break;
default:
break;
}
}
public static void main(String[] args) {
Scanner scan = new Scanner(System.in);
Stack<Integer> stack = new Stack<Integer>();
int val = 0;
int a = scan.nextInt();
while (a-- > 0) {
int t = scan.nextInt();
if (t == 1) {
val = scan.nextInt();
}
maxStack(t, val, stack);
}
scan.close();
}
}
有什么建议吗?
答案 0 :(得分:0)
您之所以会浪费时间,是因为您每次对它们执行sort
操作。这个问题可以通过两种方式解决