我通过弹出它来检查堆栈是否已经排序,并将pop与expek进行比较。如果弹出大于窥视,我们知道这两个元素是有序的。只要堆栈不空,我就会运行这个循环。
我遇到的问题是堆栈的最后一个元素。我做了我最后的流行音乐,但它试图偷看一个空的堆栈,以确保它有序。由于那里什么也没有,我得到一个运行时错误。
public static boolean isSorted(Stack<Integer> s){
boolean result = true;
while(!s.empty()){
if(s.pop() < s.peek()){
result = false;
}
}
return result;
}
我试图用Stack专门做这个,所以只使用push pop和peek。没有来自ArrayList。我怎样才能解决这个问题,同时还要检查每个元素?
我尝试将pop存储在一个临时变量中,但没有修复任何内容。不知道我希望的是什么
答案 0 :(得分:2)
问题是您需要两个项目,但myseries.to_dict()
只检查一个项目。致电empty()
后,您需要在执行pop()
之前再进行一次empty()
来电:
peek()
答案 1 :(得分:0)
必须,pop
删除最后一个元素,如果堆栈为空,则peek
抛出EmptyStackException
public static boolean isSorted(Stack<Integer> s){
boolean result = true;
while(!s.empty()){
if(s.size() == 1)
return result;
if(s.pop() < s.peek()){
result = false;
}
}
return result;
}
答案 2 :(得分:0)
一种方法是明确检查尺寸:
while(s.size() > 1){ // ok, we have enough elements in the stack
if (s.pop() < s.peek()) {
result = false;
break; // no need to proceed, we already know it's not sorted.
}
}