集合栈 牛客网 程序员面试金典 C++ Python
集合栈 牛客网 程序员面试金典 C++ Python
- 题目描述
- 请实现一种数据结构SetOfStacks,由多个栈组成,其中每个栈的大小为size,当前一个栈填满时,新建一个栈。该数据结构应支持与普通栈相同的push和pop操作。
- 给定一个操作序列int[][2] ope(C++为vector<vector<int>>),每个操作的第一个数代表操作类型,若为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相关推荐
- 双栈排序 牛客网 程序员面试金典 C++ Python
双栈排序 牛客网 程序员面试金典 C++ Python 题目描述 请编写一个程序,按升序对栈进行排序(即最大元素位于栈顶),要求最多只能使用一个额外的栈存放临时数据,但不得将元素复制到别的数据结构中. ...
- 原串反转 牛客网 程序员面试金典 C++ Python
原串反转 牛客网 程序员面试金典 C++ Python 题目描述 请实现一个算法,在不使用额外数据结构和储存空间的情况下,翻转一个给定的字符串(可以使用单个过程变量). 给定一个string iniS ...
- 空格替换 牛客网 程序员面试金典 C++ Python
空格替换 牛客网 程序员面试金典 C++ Python 题目描述 请编写一个方法,将字符串中的空格全部替换为"%20".假定该字符串有足够的空间存放新增的字符,并且知道字符串的真实 ...
- 回文链表 牛客网 程序员面试金典 C++ Python
回文链表 牛客网 程序员面试金典 C++ Python 题目描述 请编写一个函数,检查链表是否为回文. 给定一个链表ListNode* pHead,请返回一个bool,代表链表是否为回文. 测试样例 ...
- 整数转化 牛客网 程序员面试金典 C++ Python
整数转化 牛客网 程序员面试金典 C++ Python 题目描述 编写一个函数,确定需要改变几个位,才能将整数A转变成整数B. 给定两个整数int A,int B.请返回需要改变的数位个数. 测试样例 ...
- 确定字符互异 牛客网 程序员面试金典 C++ Python
确定字符互异 牛客网 程序员面试金典 C++ Python 题目描述 请实现一个算法,确定一个字符串的所有字符是否全都不同.这里我们要求不允许使用额外的存储结构. 给定一个string iniStri ...
- 无缓存交换 牛客网 程序员面试金典 C++ Python
无缓存交换 牛客网 程序员面试金典 C++ Python 题目描述 请编写一个函数,函数内不使用任何临时变量,直接交换两个数的值. 给定一个int数组AB,其第零个元素和第一个元素为待交换的值,请返回 ...
- 平衡二叉树检查 牛客网 程序员面试金典 C++ Python
平衡二叉树检查 牛客网 程序员面试金典 C++ Python 题目描述 实现一个函数,检查二叉树是否平衡,平衡的定义如下,对于树中的任意一个结点,其两颗子树的高度差不超过1. 给定指向树根结点的指针T ...
- 平分的直线 牛客网 程序员面试金典 C++ Python
平分的直线 牛客网 程序员面试金典 C++ Python 题目描述 在二维平面上,有两个正方形,请找出一条直线,能够将这两个正方形对半分.假定正方形的上下两条边与x轴平行. 给定两个vecotrA和B ...
最新文章
- 好久没有深入研究技术了,最近这两年太忙但又不知道忙了些什么
- autojs 如何获取控件的desc_Autojs Pro中,常用的几个选择器搜索接口的区别-技术类-雨后春笋...
- jzoj6307-安排【归并排序】
- 整理了二个基本的css库(高手请绕道)
- Windows server 2008 R2实现多用户远程连接
- matlab 两点划线,matlab学习2-画线
- python爬虫有道词典_Python爬取有道词典,有道的反爬很难吗?也就这样啊!
- jquery 的$()
- Cesium中的常用坐标及转换
- css里的小图标怎么加入,前端页面如何引入小图标?CSS字体的另类使用方式!
- js网页右下角弹窗js特效
- 使用Certbot申请ssl证书
- python新手快速入门教程-10 分钟快速入门 Python3的教程
- 2021年全球高级相变材料(PCM)收入大约1513.7百万美元,预计2028年达到3220.4百万美元
- Identity, Positive, 和Similarity的区别
- 无法连接虚拟设备sata的原因
- 计算机绘图快捷键,计算机绘图常用软件快捷键大全
- uTorrent 高级设置方法
- 用计算机录入一部书稿,计算机一级考试指导:汉字录入题的操作
- 整理并记录几种运算放大器