集合栈 牛客网 程序员面试金典 C++ Python

  • 题目描述
  • 请实现一种数据结构SetOfStacks,由多个栈组成,其中每个栈的大小为size,当前一个栈填满时,新建一个栈。该数据结构应支持与普通栈相同的push和pop操作。
  • 给定一个操作序列int[][2] ope(C++为vector&ltvector&ltint>>),每个操作的第一个数代表操作类型,若为1,则为push操作,后一个数为应push的数字;若为2,则为pop操作,后一个数无意义。请返回一个int[],为完成所有操作后的SetOfStacks,顺序应为从下到上,默认初始的SetOfStacks为空。保证数据合法。

C++

class SetOfStacks {
public:
//run: 5ms memory:496kvector<vector<int>> setOfStacks(vector<vector<int>> ope, int size){vector<vector<int>> ret;int len = ope.size();if(len == 0 || size <= 0) return ret;vector<int> tmp;for (int i = 0; i < len; i++){if (ope[i][0] == 1){if(tmp.size() == size){ret.push_back(tmp);tmp.clear();}tmp.push_back(ope[i][1]);}else{int retSize = ret.size();int tmpSize = tmp.size();if ((0 == retSize) && (tmpSize == 0))int pass_and_do_nothing_may_you_can_print_something = 0;else{if(tmpSize == 0 ){tmp = ret[retSize - 1];ret.pop_back();}tmp.pop_back();}}}if (tmp.size()) ret.push_back(tmp);return ret;}
};

Python

class SetOfStacks:
#run:61ms memory:5712kdef setOfStacks(self, ope, size):if size < 1: return Noneif None == ope: return Noneret = []lt = []for i in range(len(ope)):item = ope[i]if item[0] == 1:if len(lt) == size:ret.append(lt)lt = []lt.append(item[1])else:if (len(ret) == 0 and len(lt) == 0):passelse:if len(lt) == 0:lt = ret.pop()lt.pop()ret.append(lt)return ret

集合栈 牛客网 程序员面试金典 C++ Python相关推荐

  1. 双栈排序 牛客网 程序员面试金典 C++ Python

    双栈排序 牛客网 程序员面试金典 C++ Python 题目描述 请编写一个程序,按升序对栈进行排序(即最大元素位于栈顶),要求最多只能使用一个额外的栈存放临时数据,但不得将元素复制到别的数据结构中. ...

  2. 原串反转 牛客网 程序员面试金典 C++ Python

    原串反转 牛客网 程序员面试金典 C++ Python 题目描述 请实现一个算法,在不使用额外数据结构和储存空间的情况下,翻转一个给定的字符串(可以使用单个过程变量). 给定一个string iniS ...

  3. 空格替换 牛客网 程序员面试金典 C++ Python

    空格替换 牛客网 程序员面试金典 C++ Python 题目描述 请编写一个方法,将字符串中的空格全部替换为"%20".假定该字符串有足够的空间存放新增的字符,并且知道字符串的真实 ...

  4. 回文链表 牛客网 程序员面试金典 C++ Python

    回文链表 牛客网 程序员面试金典  C++ Python 题目描述 请编写一个函数,检查链表是否为回文. 给定一个链表ListNode* pHead,请返回一个bool,代表链表是否为回文. 测试样例 ...

  5. 整数转化 牛客网 程序员面试金典 C++ Python

    整数转化 牛客网 程序员面试金典 C++ Python 题目描述 编写一个函数,确定需要改变几个位,才能将整数A转变成整数B. 给定两个整数int A,int B.请返回需要改变的数位个数. 测试样例 ...

  6. 确定字符互异 牛客网 程序员面试金典 C++ Python

    确定字符互异 牛客网 程序员面试金典 C++ Python 题目描述 请实现一个算法,确定一个字符串的所有字符是否全都不同.这里我们要求不允许使用额外的存储结构. 给定一个string iniStri ...

  7. 无缓存交换 牛客网 程序员面试金典 C++ Python

    无缓存交换 牛客网 程序员面试金典 C++ Python 题目描述 请编写一个函数,函数内不使用任何临时变量,直接交换两个数的值. 给定一个int数组AB,其第零个元素和第一个元素为待交换的值,请返回 ...

  8. 平衡二叉树检查 牛客网 程序员面试金典 C++ Python

    平衡二叉树检查 牛客网 程序员面试金典 C++ Python 题目描述 实现一个函数,检查二叉树是否平衡,平衡的定义如下,对于树中的任意一个结点,其两颗子树的高度差不超过1. 给定指向树根结点的指针T ...

  9. 平分的直线 牛客网 程序员面试金典 C++ Python

    平分的直线 牛客网 程序员面试金典 C++ Python 题目描述 在二维平面上,有两个正方形,请找出一条直线,能够将这两个正方形对半分.假定正方形的上下两条边与x轴平行. 给定两个vecotrA和B ...

最新文章

  1. 好久没有深入研究技术了,最近这两年太忙但又不知道忙了些什么
  2. autojs 如何获取控件的desc_Autojs Pro中,常用的几个选择器搜索接口的区别-技术类-雨后春笋...
  3. jzoj6307-安排【归并排序】
  4. 整理了二个基本的css库(高手请绕道)
  5. Windows server 2008 R2实现多用户远程连接
  6. matlab 两点划线,matlab学习2-画线
  7. python爬虫有道词典_Python爬取有道词典,有道的反爬很难吗?也就这样啊!
  8. jquery 的$()
  9. Cesium中的常用坐标及转换
  10. css里的小图标怎么加入,前端页面如何引入小图标?CSS字体的另类使用方式!
  11. js网页右下角弹窗js特效
  12. 使用Certbot申请ssl证书
  13. python新手快速入门教程-10 分钟快速入门 Python3的教程
  14. 2021年全球高级相变材料(PCM)收入大约1513.7百万美元,预计2028年达到3220.4百万美元
  15. Identity, Positive, 和Similarity的区别
  16. 无法连接虚拟设备sata的原因
  17. 计算机绘图快捷键,计算机绘图常用软件快捷键大全
  18. uTorrent 高级设置方法
  19. 用计算机录入一部书稿,计算机一级考试指导:汉字录入题的操作
  20. 整理并记录几种运算放大器

热门文章

  1. Pandas数据处理1、DataFrame删除NaN空值(dropna各种属性值控制超全)
  2. git config命令和Git配置文件
  3. 新版微信来了,这个功能也下了
  4. java 启动类_java程序启动,类的加载情况
  5. 从0搭建vue项目笔记1
  6. 大型电磁铁磁场设计方案
  7. 磁场发生器之电磁铁 Electromagnet
  8. 2K屏幕+骁龙801 OPPO Find 7标准版评测
  9. 用代入法求解递归式里的”微妙细节“【算法导论P49】
  10. Linux基础指令(覆盖80%)