堆盘子00

题目链接

堆盘子

题目描述

注意点

  • SetOfStacks应该由多个栈组成,并且在前一个栈填满时新建一个栈

解答思路

  • 将多个栈存储到一个List中,当入栈时,如果List中最后一个栈容量已经达到cap,则需要新建一个栈,将元素推到新栈中,并将新栈添加到List中;当出栈时,如果List中最后一个栈只有一个元素,当该元素出栈后,变为空栈,需要将该栈从List中移除

代码

class StackOfPlates {
    int cap;
    List<Deque> list;

    public StackOfPlates(int cap) {
        this.cap = cap;
        list = new ArrayList<>();
    }
    
    public void push(int val) {
        if (cap == 0) {
            return;
        }
        if (list.isEmpty() || list.get(list.size() - 1).size() >= cap) {
            Deque<Integer> deque = new ArrayDeque<>();
            deque.push(val);
            list.add(deque);
        } else {
            Deque<Integer> deque = list.get(list.size() - 1);
            deque.push(val);
        }
    }
    
    public int pop() {
        if (list.isEmpty()) {
            return -1;
        }
        Deque<Integer> deque = list.get(list.size() - 1);
        int res = deque.pop();
        if (deque.isEmpty()) {
            list.remove(list.size() - 1);
        }
        return res;
    }
    
    public int popAt(int index) {
        if (index >= list.size()) {
            return -1;
        }
        Deque<Integer> deque = list.get(index);
        int res = deque.pop();
        if (deque.isEmpty()) {
            list.remove(index);
        }
        return res;
    }
}

关键点

  • 注意边界问题
  • 注意cap为0的情况

相关推荐

  1. jvm

    2024-06-08 08:08:01       15 阅读
  2. 排序!!

    2024-06-08 08:08:01       6 阅读
  3. 大根小根

    2024-06-08 08:08:01       32 阅读

最近更新

  1. TCP协议是安全的吗?

    2024-06-08 08:08:01       18 阅读
  2. 阿里云服务器执行yum,一直下载docker-ce-stable失败

    2024-06-08 08:08:01       19 阅读
  3. 【Python教程】压缩PDF文件大小

    2024-06-08 08:08:01       18 阅读
  4. 通过文章id递归查询所有评论(xml)

    2024-06-08 08:08:01       20 阅读

热门阅读

  1. 微信小程序和支付宝小程序生成二维码

    2024-06-08 08:08:01       12 阅读
  2. mysql 如何分布式部署

    2024-06-08 08:08:01       8 阅读
  3. 公司面试题总结(一)

    2024-06-08 08:08:01       9 阅读
  4. 正则表达式

    2024-06-08 08:08:01       9 阅读
  5. Spring Boot 常用注解

    2024-06-08 08:08:01       6 阅读
  6. Ajax + Easy Excel 通过Blob实现导出excel

    2024-06-08 08:08:01       9 阅读
  7. ARCGIS 几种SHP融合、拼接等方法

    2024-06-08 08:08:01       8 阅读
  8. 【微信小程序】连接蓝牙设备

    2024-06-08 08:08:01       11 阅读