面试题 03.03. 堆盘子

输入:
["StackOfPlates", "push", "push", "push", "popAt", "popAt", "popAt"]
[[2], [1], [2], [3], [0], [0], [0]]

“StackOfPlates” [2] 表示每堆盘子最高2个,再次push就要另添加一个栈来放盘子

"push" [1] 堆盘子1(第一堆有一个盘子1)

"push" [2] 堆盘子2(第一堆有两个盘子1,2)

"push" [3] 堆盘子3(第一堆已经有两个盘子了,达到_capcity,另起一堆,第二堆有一个盘子3)

“popAt” [0] 弹出指定堆(第一堆)的顶层盘子2

“popAt” [0] 弹出指定堆(第一堆)的顶层盘子1(此时第一堆没有盘子了,记得删除这一堆,原来的第二堆变成现在的第一堆)

“popAt” [0] 弹出指定堆(第一堆)的顶层盘子3

注意cap=0的时候。

class StackOfPlates {
public:vector<stack<int> > v;int stack_max_size;StackOfPlates(int cap) {v.clear();stack_max_size = cap;}void push(int val) {int v_size = v.size();if(v_size==0 || v.back().size()==stack_max_size){stack<int> s;s.push(val);v.push_back(s);}else v.back().push(val);}int pop() {int v_size = v.size();if(v_size==0 || stack_max_size==0) return -1; int res = v.back().top();v.back().pop();if(v.back().size()==0) v.pop_back();return res;}int popAt(int index) {int v_size = v.size();if(index>=v_size || stack_max_size==0) return -1;int res = v[index].top();v[index].pop();if(v[index].size()==0)  v.erase(v.begin()+index);return res;}
};

面试题 03.03. 堆盘子相关推荐

  1. 程序员面试金典 - 面试题 03.03. 堆盘子 (vector(stack))

    1. 题目 堆盘子.设想有一堆盘子,堆太高可能会倒下来.因此,在现实生活中,盘子堆到一定高度时,我们就会另外堆一堆盘子. 请实现数据结构SetOfStacks,模拟这种行为.SetOfStacks 应 ...

  2. 【leetcode】面试题 03.03. 堆盘子vector_stack的使用

    堆盘子.设想有一堆盘子,堆太高可能会倒下来.因此,在现实生活中,盘子堆到一定高度时,我们就会另外堆一堆盘子.请实现数据结构SetOfStacks,模拟这种行为.SetOfStacks应该由多个栈组成, ...

  3. [Leedcode][JAVA][面试题 16.03. 交点]

    [问题描述]面试题 16.03. 交点 给定两条线段(表示为起点start = {X1, Y1}和终点end = {X2, Y2}),如果它们有交点,请计算其交点,没有交点则返回空值.要求浮点型误差不 ...

  4. 面试题 04.03. 特定深度节点链表

    面试题 04.03. 特定深度节点链表 思路:层次遍历 /*** Definition for a binary tree node.* struct TreeNode {* int val;* Tr ...

  5. 面试题 01.03. URL化 + 重新排列字符串

    面试题 01.03. URL化 题目链接:https://leetcode-cn.com/problems/string-to-url-lcci/ URL化.编写一种方法,将字符串中的空格全部替换为% ...

  6. 【LeetCode】面试题 08.03. 魔术索引(C++)

    面试题 08.03. 魔术索引(C++) 1 题目描述 2 示例描述 2.1 示例1 2.2 示例2 3 解题提示 4 解题思路 5 源码详解(C++) 1 题目描述 魔术索引. 在数组A[0-n-1 ...

  7. 程序员面试金典:面试题 02.03. 删除中间节点

    1. 题目 面试题 02.03. 删除中间节点 2. 描述 实现一种算法,删除单向链表中间的某个节点(即不是第一个或最后一个节点),假定你只能访问该节点. 示例: 输入: 单向链表 a->b-& ...

  8. 本周ASP.NET英文技术文章推荐[02/25 - 03/03]

    摘要 本期共有9篇文章: 借助UpdatePanel实现延迟加载 技巧和诀窍:ASP.NET中的URL重写 Sys.WebForms.PageRequestManagerParserErrorExce ...

  9. 60. Leetcode 面试题 10.03. 搜索旋转数组 (二分查找-局部有序)

    搜索旋转数组.给定一个排序后的数组,包含n个整数,但这个数组已被旋转过很多次了,次数不详.请编写代码找出数组中的某个元素,假设数组元素原先是按升序排列的.若有多个相同元素,返回索引值最小的一个.示例1 ...

最新文章

  1. Netty实现自定义协议
  2. Lock的lockInterruptibly()
  3. jq ajax提交评论,织梦评论怎么改成自己的jq ajax评论
  4. (TOJ1531)爱的伟大意义
  5. TF1与TF2的求和程序对比
  6. c语言中sizeof是一个标准库函数,对C语言中的sizeof的介绍分析
  7. MyEclipse项目无法自动编译解决方案
  8. java 线程栈大小配置,JVM运行时数据区详解-Stack栈(优化配置、代码样例)
  9. python安卓下载-QPython - Python for Android
  10. STL中的序列式容器——queue(队列)
  11. intel服务器无线网卡,英特尔网卡: Intel无线网卡Win7驱动 12.4.1.53版发布
  12. 点赋科技:如何提高淘宝店铺的流量?
  13. 英语作文计算机国际会议开幕词,国际学术会议英文主持词
  14. pthread_cond_wait pthread_cond_broadcast
  15. 全面了解量化风险管理-转载 风控搭建的可以一看
  16. 4.外部协作单位的组织与管理
  17. 使用python3查收与发送邮件
  18. android系统广播汇总
  19. oracle ALTER 用法
  20. 删除的微信聊天记录如何恢复

热门文章

  1. TensorFlow工作笔记002---Centos7.3下TensorFlow使用python创建计算图案例
  2. memcached高速缓存学习笔记003---利用JAVA程序操作memcached crud操作
  3. JAVA常用API或编程工具002---SpringSource Tool Suite:基于Eclipse的Spring应用开发环境
  4. jsp加载常量的探讨
  5. SQL Server 2012 各版本功能比较
  6. 将一副完整的位图均分成n块位图显示
  7. c语言数据结构字符串匹配,C语言数据结构之模式匹配字符串定位问题
  8. ap sat_收藏丨2020年雅思、托福、GRE、SAT、ACT、AP考试时间汇总
  9. win32开发(mdi应用)
  10. 随想录(高质量代码开发)