【发布时间】:2019-03-20 05:26:01
【问题描述】:
大家好,我有一些数据结构挑战,我真的不知道如何更好地解决。
我有一个正确的解决方案但是时间超过了一些限制,代码应该遵循N条指令:
- 当我输入 1 时将 X 数添加到堆栈中
- 用 2 删除栈顶
- 并用 3 打印堆栈中的最大数量
它应该用数组、数组列表、堆栈、队列或树来解决。这就是我所做的,但它超过了 6.51 秒:
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();
}
}
有什么推荐吗?
【问题讨论】:
-
警告:您使用的是原始类型,即
Stack而不是Stack<Integer>。使用原始类型只允许向后兼容,不应该用新代码编写。 -
那么也许您需要一种更好的方法来跟踪堆栈中的最大项。我建议你研究geeksforgeeks.org/…,但不要跟踪最小的项目,而是跟踪最大的项目。
标签: java data-structures