【发布时间】:2021-12-30 22:21:39
【问题描述】:
我正在尝试解决有关hackerrank 的问题。但我每次都收到emptyStack 异常。我认为这可能是因为我将堆栈传递给getMax 函数并且它正在更改原始堆栈.
我试图在 getMax 中写这个,希望它不会影响最终堆栈,但它没有工作。
Stack<Integer> s=st;
你能指出并解释我犯的错误吗?
-
对于某些测试用例,该程序运行得非常好。(0,2,27)
-
问题链接:https://www.hackerrank.com/challenges/maximum-element/copy-from/243724938
-
我的解决方案:
import java.util.*; class Solution { static void getMax(Stack<Integer> st) { Stack<Integer> s=st; int max=s.peek(); s.pop(); while(!s.empty()) { if(s.peek()>max) max=s.peek(); s.pop(); } System.out.println(max); } public static void main(String args[]) { Stack<Integer> s=new Stack<Integer>(); Scanner sc=new Scanner(System.in); int n=sc.nextInt(); while(n-->0) { int c=sc.nextInt(); if(c==1) s.push(sc.nextInt()); else if(c==2) s.pop(); else getMax(s); } } }
【问题讨论】:
-
请edit 发帖并正确格式化您的代码。 --- "
Stack<Integer> s=st;" - 你觉得这行代码是什么?
标签: java function exception stack