关于javascript:设计一个支持-push-pop-top-操作并能在常数时间内检索到最小元素的栈

5次阅读

共计 690 个字符,预计需要花费 2 分钟才能阅读完成。

设计一个反对 push,pop,top 操作,并能在常数工夫内检索到最小元素的栈。

push(x) —— 将元素 x 推入栈中。
pop() —— 删除栈顶的元素。
top() —— 获取栈顶元素。
getMin() —— 检索栈中的最小元素。

/**
 */
function MinStack() {let items = []
  let min
  // 每次 push 数据的时候,都要进行和最小值进行比拟,拿到最小值
  this.push = function(item) {
    min = min && item > min ? min : item
    return items.push(item)
  }
  // 每次移除数据时,都要和最小值进行比拟,如果不大于最小值,则返回残余数据的最小值。this.pop = function(){let item = items.pop()
    min = item > min ? min : Math.min(...items)
    return item
  }
  this.getMin = function() {console.log(min)
    return min
  }
  this.top = function(){console.log(items[items.length - 1] )
    return items[items.length - 1] 
  }
}
let minStack = new MinStack();
minStack.push(-2);
minStack.push(0);
minStack.push(-3);
minStack.getMin();   // 返回 -3.
console.log(minStack.pop());
minStack.top();      // 返回 0.
minStack.getMin();   // 返回 -2.
正文完
 0