Я пытаюсь решить этот вопрос с помощью Stack из LeetCode, я могу пройти только тесты 14/18 тестов, поскольку тесты недоступны. Я не могу понять, какие крайние случаи отсутствуют. Я новичок в Java, так оцененная помощь :-)Поиск минимального значения из стека
public class MinStack {
private int top;
private ArrayList<Integer> stack;
private ArrayList<Integer> minStack;
/** initialize your data structure here. */
public MinStack() {
this.top = -1;
this.stack = new ArrayList<Integer>();
this.minStack = new ArrayList<Integer>();
}
public void push(int x) {
top++;
stack.add(x);
if(top == 0){
minStack.add(x);
}
else{
minStack.add(Math.min(minStack.get(top-1), x));
}
}
public void pop() {
stack.remove(stack.get(top));
minStack.remove(minStack.get(top));
top--;
}
public int top() {
if(top >= 0)
return stack.get(top);
return -1;
}
public int getMin() {
if(top >= 0)
return minStack.get(top);
return -1;
}
}
/**
* Your MinStack object will be instantiated and called as such:
* MinStack obj = new MinStack();
* obj.push(x);
* obj.pop();
* int param_3 = obj.top();
* int param_4 = obj.getMin();
*/
Неужели кто-то пытался решить его таким образом? Я считаю, что ему нужно что-то делать, когда Стек пуст или, может быть, нет. – inSynergy
Ваша проблема в том, что вы используете 'remove (Object o)', когда вам просто нужно использовать 'remove (int index)'. – Andreas
Почему вы используете 'ArrayList' для определения стека? Вы можете использовать массив, который является более простым методом. – progyammer