CC14:集合栈
题目
请实现一种数据结构SetOfStacks,由多个栈组成,其中每个栈的大小为size,当前一个栈填满时,新建一个栈。该数据结构应支持与普通栈相同的push和pop操作。
给定一个操作序列int[][2] ope(C++为vector<vector>),每个操作的第一个数代表操作类型,若为1,则为push操作,后一个数为应push的数字;若为2,则为pop操作,后一个数无意义。
请返回一个int[],为完成所有操作后的SetOfStacks,顺序应为从下到上,默认初始的SetOfStacks为空。保证数据合法。
解法
这道题表述的不是特别清楚,举个例子:
1 2 1 3 1 4
2 2 1 5 2 4-------->表示的意思依次是:插入2、插入3、插入4、消除4(栈顶元素)、插入5、消除5(栈顶元素)、插入6、插入7、消除7
1 6 1 7 2 0
所以我们只需要依次判断数组元素,如果是1的话后面跟着的就是要插入的数字,如果是2的话就将之前插入的数字排除。而这里还涉及到了栈的size问题,由于返回类型为vector<vector<int>>,我们实际上可以利用一个vector类型(vec)来模拟栈。当vec的大小为size的时候就将vec存入到vector<vector>类型中,还有一点要注意的就是可能"出栈"的时候vec是没有元素的,此时我们就需要从结果vector<vector>中返回一个vec重新进行排除。
整个程序的逻辑还是非常清楚的,流程化思维就可以解决这个问题,AC代码如下:
class SetOfStacks {
public:
vector<vector<int> > setOfStacks(vector<vector<int> > ope, int size) {
// write code here
vector<vector<int> > res;
if(ope.size()==0)
return res;
vector<int> vec;
for(int i=0;i<ope.size();i++)
{
if(ope[i][0]==1)
{
vec.push_back(ope[i][1]);
if(vec.size()==size)
{
res.push_back(vec);
vec.clear();
}
}
else{
if(vec.size()==0)
{
vec=res.back();
res.pop_back();
}
vec.pop_back();
}
}
if(!vec.empty())
res.push_back(vec);
return res;
}
};
CC14:集合栈的更多相关文章
- stack 集合栈计算机 (摘)
有一个专门为了集合运算而设计的“集合栈”计算机.该机器有一个初始为空的栈,并且支持以下操作:PUSH:空集“{}”入栈DUP:把当前栈顶元素复制一份后再入栈UNION:出栈两个集合,然后把两者的并集入 ...
- 集合栈计算机(The SetStack Computer, ACM/ICPC NWERC 2006,Uva12096)
集合栈计算机(The SetStack Computer, ACM/ICPC NWERC 2006,Uva12096) 题目描述 有一个专门为了集合运算而设计的"集合栈"计算机.该 ...
- uva 12096 - The SetStack Computer(集合栈)
例题5-5 集合栈计算机(The Set Stack Computer,ACM/ICPC NWERC 2006,UVa12096) 有一个专门为了集合运算而设计的"集合栈"计算机. ...
- UVA12096 集合栈计算机(map和vector实现双射关系+集合的交并运算的STL)
题目大意: 对于一个以集合为元素的栈,初始时栈为空. 输入的命令有如下几种: PUSH:将空集{}压栈 DUP:将栈顶元素复制一份压入栈中 UNION:先进行两次弹栈,将获得的集合A和B取并集,将结果 ...
- UVa - 12096 集合栈计算机(STL)
[题意] 有一个专门为了集合运算而设计的“集合栈”计算机.该机器有一个初始为空的栈,并且支持以下操作:PUSH:空集“{}”入栈DUP:把当前栈顶元素复制一份后再入栈UNION:出栈两个集合,然后把两 ...
- 5_5 集合栈计算机(UVa12096)<stack与STL其他容器的综合运用>
有一个专门为了集合运算而设计的“集合栈”计算机.该机器有一个初始化为空的栈,并支持以下操作:( 维护 N(1≤N≤2000) 个操作, 可能的五种操作如下:) ■PUSH: 在栈顶加入一个空集合 A= ...
- 集合栈 牛客网 程序员面试金典 C++ Python
集合栈 牛客网 程序员面试金典 C++ Python 题目描述 请实现一种数据结构SetOfStacks,由多个栈组成,其中每个栈的大小为size,当前一个栈填满时,新建一个栈.该数据结构应支持与普通 ...
- 2017年11月4日 vs类和结构的区别&哈希表&队列集合&栈集合&函数
类和结构的区别 类: 类是引用类型在堆上分配,类的实例进行赋值只是复制了引用,都指向同一段实际对象分配的内存 类有构造和析构函数 类可以继承和被继承 结构: 结构是值类型在栈上分配(虽然栈的访问速度比 ...
- 算法习题---5.5集合栈计算机(Uva12096)*****
一:题目 对于一个以集合为元素的栈,初始时栈为空. 输入的命令有如下几种: PUSH:将空集{}压栈 DUP:将栈顶元素复制一份压入栈中 UNION:先进行两次弹栈,将获得的集合A和B取并集,将结果压 ...
随机推荐
- 0-mybatis目录
mybatis 第一天: 对原生态jdbc程序(单独使用jdbc开发)问题总结 框架原理 入门程序 用户的增.删.改.查 开发dao两种方法: 原始dao开发方法(程序需要编写dao接口和dao实现类 ...
- BZOJ 1370 [Baltic2003]Gang团伙:并查集【虚点】
题目链接:http://www.lydsy.com/JudgeOnline/problem.php?id=1370 题意: 在某城市里住着n个人,任何两个认识的人不是朋友就是敌人,而且满足: (1)我 ...
- 关于MVC模板渲染的一点小事type="text/template"
先上一个demo,简单粗暴,请自便 <!DOCTYPE html> <html> <head lang="en"> <meta chars ...
- eclipse的maven工程Dynamic Web Module 2.3 修改为3.0 解决办法
1. 创建Maven Web工程 2. 项目只有src/main/resources >Java Build Path导入Tomcat运行环境 3. 删除以图片红框中的文件 4. Propert ...
- Linux_服务器_05_CentOS 7安装完成后初始化的方法_Linux
参考资料 1.CentOS 7安装完成后初始化的方法_Linux
- 从TS流到PAT和PMT
转自:https://blog.csdn.net/rongdeguoqian/article/details/18214627 一 从TS流开始 最近开始学习数字电视机顶盒的开发,从MPEG-2到DV ...
- tomcat 6.0 安装及配置
前提:安装并配置好jdk 1.免安装版存放目录:D:\01Install\tomcat
- Codeforces617E XOR and Favorite Number(分块 异或)
Bob has a favorite number k and ai of length n. Now he asks you to answer m queries. Each query is g ...
- 1087 All Roads Lead to Rome (30)(30 分)
Indeed there are many different tourist routes from our city to Rome. You are supposed to find your ...
- 洛谷 P1496 火烧赤壁
题目描述 曹操平定北方以后,公元208年,率领大军南下,进攻刘表.他的人马还没有到荆州,刘表已经病死.他的儿子刘琮听到曹军声势浩大,吓破了胆,先派人求降了. 孙权任命周瑜为都督,拨给他三万水军,叫他同 ...