刷剑指offer遇到的问题
来源:7-7 二分搜索树中的问题 Lowest Common Ancestor of a Binary Search Tree
qq_往事_8
2019-11-05
题目是这样的,要求实现一个带有min函数的栈
下面是我的代码
public class Solution {
Stack<Integer> stack = new Stack<>();
Stack<Integer> minStack = new Stack<>();
public void push(int node) {
stack.push(node);
if (minStack.isEmpty()){
minStack.push(node);
}
if (!minStack.isEmpty() && minStack.peek() > node){
minStack.push(node);
}
}
public void pop() {
if (stack.isEmpty() && minStack.isEmpty()){
return;
}
stack.pop();
if (stack.peek().equals(minStack.peek())){
minStack.remove(stack.peek());
}
}
public int top() {
return stack.peek();
}
public int min() {
return minStack.peek();
}
public static void main(String[] args) {
Solution solution = new Solution();
solution.push(3);
System.out.println(solution.min());
solution.push(4);
System.out.println(solution.min());
solution.push(2);
System.out.println(solution.min());
solution.push(3);
System.out.println(solution.min());
solution.pop();
System.out.println(solution.min());
solution.pop();
System.out.println(solution.min());
solution.pop();
System.out.println(solution.min()); //这行会遇到遇到问题
solution.push(0);
System.out.println(solution.min());
}
}
在提交时会遇到这个问题
如果把代码中出问题的行注释掉就会的到正确的结果,也就是在当minStack为空时就什么都不返回,可是什么都不返回应该怎么写啊。min()方法总是要返回一个值,抛出异常提交也不能通过,
这下应该怎么改啊
写回答
1回答
-
liuyubobobo
2019-11-06
抱歉,我没有特别理解你的问题。因为你注释出问题的行在 main 函数中,但是 main 函数和你设计的 minStack 逻辑无关,是你的测试代码有问题。
这就好比你使用 Java 标准库中的栈,也不能从一个空栈中取出栈顶元素。如果你从空栈中取出栈顶元素,也会报错。但这不意味着Java标准库中的栈实现有问题,意味着你使用栈的方式有问题。
因为我没有看过《剑指 Offerr》,所以我不确定我是否正确理解了你的问题。如果我对问题的理解不正确,还请去《剑指 Offerr》相关讨论社区去解决你的问题。这个课程可以回答 Leetcode 上的所有问题:)
继续加油!:)
00
相似问题