题目链接

    1. var MaxQueue = function() {
    2. this.queue = [];
    3. this.deque = [];
    4. };
    5. /**
    6. * @return {number}
    7. */
    8. MaxQueue.prototype.max_value = function() {
    9. if(this.deque.length>0){
    10. return this.deque[0];
    11. }
    12. return -1;
    13. };
    14. /**
    15. * @param {number} value
    16. * @return {void}
    17. */
    18. MaxQueue.prototype.push_back = function(value) {
    19. while(this.deque.length>0 && value > this.deque[this.deque.length-1]){
    20. this.deque.pop();
    21. }
    22. this.deque.push(value);
    23. this.queue.push(value);
    24. };
    25. /**
    26. * @return {number}
    27. */
    28. MaxQueue.prototype.pop_front = function() {
    29. if(this.queue.length === 0){
    30. return -1;
    31. }
    32. let res = this.queue.shift();
    33. if(res === this.deque[0]){
    34. this.deque.shift();
    35. }
    36. return res;
    37. };