题目
实现一个特殊的栈,在实现栈的基本功能的基础上,再实现返回栈中最小元素的操作。要求操作的时间复杂度是0(1);
- 在入栈的同时,再维护一个最小值的栈,普通栈入栈的时候,最小栈也同时入栈当前栈顶范围内的最小元素,如果普通入栈的元素比当前最小栈顶元素要小,则最小栈入栈普通栈的元素,否则使用之前的栈顶元素,这样每次普通栈弹出的时候,最小栈的栈顶都是当前普通栈的最小元素
function process(arr) {
const minStack = [];
minStack[0] = arr[0];
for (let i = 1; i < arr.length; i++) {
const temp = arr[i];
if (arr[i] < minStack[i - 1]) {
minStack[i] = temp;
} else {
minStack[i] = minStack[i - 1];
}
}
}
// minStack.pop()