Employeur impliqué
Design stack with peek max and pop max functionality
Utilisateur anonyme
function StackMaxPeak() { this.items = []; this.maxList = []; this.top = -1; this.maximum = -Infinity; this.maxTop = -1; this.push = function(item) { this.top++; if (item >= this.maximum) { this.maximum = item; this.maxList.push(item); this.maxTop++; } this.items.push(item); } this.pop = function() { const ele = this.items[this.top]; this.items.splice(this.top, 1); this.top--; if (ele === this.maxList[this.maxTop]) { this.maxList.splice(this.maxTop, 1); this.maxTop--; this.maximum = this.maxList[this.maxTop]; } return ele; } this.maxPeek = function() { return this.maximum; } this.max = function() { const ele = this.maxList[this.maxTop]; this.maxList.splice(this.maxTop, 1); return ele; } } var stack = new StackMaxPeak(); stack.push(1); stack.push(-1); stack.push(4); stack.push(2); stack.pop();