LeetCode

前言

/**
 * @Description LeetCode 1381. 设计一个支持增量操作的栈
 * 实现自定义栈类 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。
 *
 * 来源:力扣(LeetCode)
 * 链接:https://leetcode-cn.com/problems/design-a-stack-with-increment-operation
 */

具体实现

  • 实现类
public class CustomStack {

    /**
     * 栈
     */
    private Integer[] stack;

    /**
     * 栈顶位置
     */
    int top;

    /**
     * 构造方法
     * @param maxSize
     */
    public CustomStack(int maxSize) {
        stack = new Integer[maxSize];
        top = -1;
    }

    /**
     * 添加元素
     * 判断当前元素的个数是否达到上限,如果没有达到,
     * 就把 top 后移一个位置并添加一个元素。
     * @param x
     */
    public void push(int x) {
        if (top != stack.length - 1) {
            top ++;
            stack[top] = x;
        }
    }

    /**
     * 元素出栈
     * 判断当前栈是否为空,非空返回栈顶元素并将 top 前移一位,否则返回 -1
     * @return
     */
    public int pop() {
        if (top == -1) {
            return -1;
        }

        -- top;
        return stack[top + 1];
    }

    /**
     * 栈底的 k 个元素的值都增加 val。如果栈中元素总数小于 k,则栈中的所有元素都增加 val
     * 直接对栈底的最多 k 个元素加上 val
     * @param k
     * @param val
     */
    public void increment(int k, int val) {
        for (int i = 0; i < Math.min(k, top + 1); i++) {
            stack[i] += val;
        }
    }
}
- End -
一个努力中的公众号
关注一下吧
以上为本篇文章的主要内容,希望大家多提意见,如果喜欢记得点个推荐哦
作者:Maggieq8324
本文版权归作者和博客园共有,欢迎转载,转载时保留原作者和文章地址即可。
原文地址:https://www.cnblogs.com/maggieq8324/p/14990639.html