题目

请你设计一个支持下述操作的栈。
实现自定义栈类 CustomStack :

  • CustomStack(int maxSize):用 maxSize 初始化对象,maxSize 是栈中最多能容纳的元素数量,栈在增长到 maxSize 之后则不支持 push 操作。
  • void push(int x):如果栈还未增长到 maxSize ,就将 x 添加到栈顶。
  • int pop():弹出栈顶元素,并返回栈顶的值,或栈为空时返回 -1 。
  • void inc(int k, int val):栈底的 k 个元素的值都增加 val 。如果栈中元素总数小于 k ,则栈中的所有元素都增加 val 。

    思路

  • CustomStack 方法 生成一个[],maxSize 记录一下

  • push 方法 每次往数组中push一个值,数组长度不能超过maxSize
  • pop 方法 从数组中最后一项开始弹出,如果等于数组长度0之后弹出,返回-1
  • increment 方法 输入的k是遍历长度,遍历数组加val值 ```javascript /**
    • @param {number} maxSize */ var CustomStack = function (maxSize) { this.maxSize = maxSize this.resArray = [] };

/**

  • @param {number} x
  • @return {void} */ CustomStack.prototype.push = function (x) { if (this.resArray.length < this.maxSize) {
    1. this.resArray.push(x)
    } };

/**

  • @return {number} */ CustomStack.prototype.pop = function () { return this.resArray.length ? this.resArray.pop() : -1 };

/**

  • @param {number} k
  • @param {number} val
  • @return {void} */ CustomStack.prototype.increment = function (k, val) { for (let i = 0; i < k; i++) {
    1. if (i < this.resArray.length) {
    2. this.resArray[i] += val
    3. }
    } }; ```