gpt4 book ai didi

java - 停止查看空堆栈

转载 作者:行者123 更新时间:2023-11-30 02:45:32 25 4
gpt4 key购买 nike

我通过弹出堆栈并将弹出内容与查看内容进行比较来检查堆栈是否已排序。如果 pop 大于 peek,我们就知道这两个元素是有序的。只要堆栈不为空,我就会运行这个循环。

我遇到的问题是堆栈的最后一个元素。我做了最后一次弹出操作,但它试图查看空堆栈以确保它是有序的。由于那里什么都没有,所以我收到运行时错误。

public static boolean isSorted(Stack<Integer> s){
boolean result = true;

while(!s.empty()){
if(s.pop() < s.peek()){
result = false;
}
}

return result;
}

我尝试专门使用 Stack 来完成此操作,因此仅使用推送、弹出和查看。 ArrayList 中没有任何内容。如何解决这个问题,同时仍然检查每个元素?

我尝试将 pop 存储在临时变量中,但这没有解决任何问题。不确定我想要什么

最佳答案

问题是您需要两项,但 empty() 仅检查一项。调用 pop() 后,您需要在执行 peek() 之前执行另一个 empty() 调用:

while(!s.empty()){
// We know we have one element available; store it in "top"
Integer top = s.pop();
// If the next element is not available, exit
if (s.empty()) {
break;
}
if(top < s.peek()){
// Once result is set to "false", it never becomes "true"
// so we might as well return now:
return false;
}
}
return true;

关于java - 停止查看空堆栈,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40296186/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com