三合一。描述如何只用一个数组来实现三个栈。

你应该实现push(stackNum, value)、pop(stackNum)、isEmpty(stackNum)、peek(stackNum)方法。stackNum表示栈下标,value表示压入的值。

构造函数会传入一个stackSize参数,代表每个栈的大小。

示例1:

输入:
["TripleInOne", "push", "push", "pop", "pop", "pop", "isEmpty"]
[[1], [0, 1], [0, 2], [0], [0], [0], [0]]
 输出:
[null, null, null, 1, -1, -1, true]
说明:当栈为空时`pop, peek`返回-1,当栈满时`push`不压入元素。

分析: 本题要求在一个数组上实现三个站栈,所以我们在代码实现时可以这样考虑,一个栈的时候对应的操作是什么? 然后主要的不同是我们要对应栈的起始点,根据对应的公式进行换算:

class TripleInOne {
public:int *stack;int top[3];int stackSize;TripleInOne(int stackSize):stackSize(stackSize) {stack = new int[stackSize*3];top[0]=top[1]=top[2]=0; //定义每个栈的标志位;}void push(int stackNum, int value) {if(top[stackNum] < stackSize)stack[stackSize*stackNum + top[stackNum]++]=value;}int pop(int stackNum) {if(top[stackNum] <= 0)return -1;elsereturn stack[stackSize*stackNum + (--top[stackNum])];}int peek(int stackNum) {if(top[stackNum] <= 0)return -1;elsereturn stack[stackSize*stackNum + (top[stackNum]-1)];}bool isEmpty(int stackNum) {return top[stackNum]==0;}
};

面试题03.01 三合一相关推荐

  1. 程序员面试金典 - 面试题 03.01. 三合一(数组栈)

    1. 题目 三合一.描述如何只用一个数组来实现三个栈. 你应该实现push(stackNum, value).pop(stackNum).isEmpty(stackNum).peek(stackNum ...

  2. 面试题 03.04. 化栈为队/面试题09. 用两个栈实现队列/232. 用栈实现队列

    2020-05-08 1.题目描述 用两个栈实现一个队列 2.题解 将一个栈用来进行入操作,另一个进行出操作,入栈直接入,出栈的时候如果是空的则把另一个 栈中的所有元素移动过来,再进行出栈,否则直接出 ...

  3. 【LeetCode】面试题 03. 数组中重复的数字

    [LeetCode]面试题 03. 数组中重复的数字 文章目录 [LeetCode]面试题 03. 数组中重复的数字 一.遍历数组 二.原地置换 总结 一.遍历数组 由于只需要找出数组中任意一个重复的 ...

  4. 【389天】跃迁之路——程序员高效学习方法论探索系列(实验阶段146-2018.03.01)...

    @(一只心中无码的程序员)专栏 实验说明 从2017.10.6起,开启这个系列,目标只有一个:通过探索新的学习方法,用2年的时间,实现2.5倍速的成长,获得普通程序员>= 5年的技术水平. 实验 ...

  5. 面试题 04.01. 节点间通路

    面试题 04.01. 节点间通路 注意是有向图,用邻接表代替图,dfs或者bfs都可 class Solution { public:bool findWhetherExistsPath(int n, ...

  6. 面试题 03.06. 动物收容所

    面试题 03.06. 动物收容所 思路:队列,记录猫和狗,all记录当前最老的是猫还是狗 class AnimalShelf { public:queue<vector<int> & ...

  7. 面试题 03.05. 栈排序

    面试题 03.05. 栈排序 思路:2个栈,data存储顺序,help帮助data存储排序 class SortedStack { public:stack<int> data, help ...

  8. 面试题 03.03. 堆盘子

    面试题 03.03. 堆盘子 输入: ["StackOfPlates", "push", "push", "push", ...

  9. 面试题 03.02. 栈的最小值

    面试题 03.02. 栈的最小值 思路:两个栈,一个存数据,一个存当前最小值 class MinStack { public:stack<int> s1;stack<int> ...

最新文章

  1. 使用NPOI导入导出标准Excel
  2. nginx Win下实现简单的负载均衡(2)站点共享Session
  3. appium+python自动化33-解锁九宫格(TouchAction)
  4. 转移指令的原理---汇编学习笔记
  5. 支持回调处理 php函数,PHP支持回调的函数有哪些
  6. spring 依赖注入总结
  7. 手势相关-解决手势冲突
  8. 原生js设置div隐藏或者显示_JavaScript动画方式控制div元素的隐藏和显示
  9. JVM 晋升到老年代的动态年龄判断
  10. 使用 JAVA 中的动态代理实现数据库连接池
  11. 计算机应用技术参加文献,面向科技文献的机器翻译(4)-计算机应用技术专业毕业论文.docx...
  12. 移动医疗的服务怎么做?来听听传统医疗器械厂商怎么说
  13. android 取色方法,安卓取色器 - 「一年好景君须记」,带你玩转安卓的色彩世界 - Android 应用 - 工具 - 【最美应用】...
  14. 知到网课教师口语艺术考试题库(含答案)
  15. WINCE6.0去掉桌面快捷方式
  16. 报表数据源之JSON
  17. 【自学编程】自己写小例子的经验
  18. 数位 dp 最低位最高位之差绝对值大于2_人教版二年级数学下册复习重点考点分析带测试题2套,给孩子下载练习!...
  19. 完美世界发布2020业绩预告:游戏净利润预增20%
  20. 业务流程审批系统java源码_java毕业设计_springboot框架的基于企业流程审批系统...

热门文章

  1. 初中学校计算机写实记录,【导生工作写实(第七期)】计算机1166班
  2. 1080ti 和 2080ti 深度学习显卡价值对比
  3. 2022速卖通做什么产品好,母婴玩具选品建议
  4. R语言使用pbern函数生成伯努利分布(0-1分布)累积分布函数数据、使用plot函数可视化伯努利分布累积分布函数数据( Bernoulli distribution)
  5. tf2.X中将模型保存为savedmodel
  6. 消息队列,ftok,
  7. 汇编语言作业 编程,将DATAS段中的每个单词的前4个字母改为大写并将改写后的结果分4行输出到屏幕上。
  8. 2021 人机交互的软件工程方法 课上测验
  9. VLC视频第三方框架的音量调节
  10. golang数据结构初探之iota