集合栈
来源:互联网 发布:软考初级程序员视频 编辑:程序博客网 时间:2024/04/28 13:10
题目描述
请实现一种数据结构SetOfStacks,由多个栈组成,其中每个栈的大小为size,当前一个栈填满时,新建一个栈。该数据结构应支持与普通栈相同的push和pop操作。
给定一个操作序列int[][2] ope(C++为vector<vector<int>>),每个操作的第一个数代表操作类型,若为1,则为push操作,后一个数为应push的数字;若为2,则为pop操作,后一个数无意义。请返回一个int[][](C++为vector<vector<int>>),为完成所有操作后的SetOfStacks,顺序应为从下到上,默认初始的SetOfStacks为空。保证数据合法。
import java.util.*;public class SetOfStacks { public ArrayList<ArrayList<Integer>> setOfStacks(int[][] ope, int size) { // write code here ArrayList<ArrayList<Integer>> res = new ArrayList<ArrayList<Integer>>();int len = ope.length;if(len==0||size==0) return null;for(int i=0; i<len; ++i){int op = ope[i][0];if(op==1){ int rl = res.size(); if(rl==0){ ArrayList<Integer> t1 = new ArrayList<Integer>(); t1.add(ope[i][1]); res.add(t1); }else{ ArrayList<Integer> t1 = res.get(res.size()-1); if(t1.size()>=size){ ArrayList<Integer> t2 = new ArrayList<Integer>(); t2.add(ope[i][1]); res.add(t2); }else{ t1.add(ope[i][1]); } }}else if(op==2){int rl = res.size();if(rl==0){return res;}else{ArrayList<Integer> t3 = res.get(rl-1);if(t3.size()==0){res.remove(rl-1);if(res.size()>0){int rt = res.size();ArrayList<Integer> t4 = res.get(rt-1);int tl4 = t4.size(); t4.remove(tl4-1);}}else{int tl4 = t3.size();t3.remove(tl4-1);}}}}return res; }}
0 0
- 集合栈
- 集合栈
- 集合栈
- 集合栈
- 集合栈
- 集合栈
- 集合栈
- 集合栈
- 集合栈
- 集合栈
- UVa12096(集合中的集合+stl)集合栈计算机
- 非泛型集合,泛型集合,栈,队列
- UVa12096集合栈计算机(集合操作)
- uva12096集合栈计算机
- 集合栈计算机
- 牛客网 | 集合栈
- 在线编程--集合栈
- Uva12096 集合栈计算机
- cocoapods的移除与安装(有的时候我们需要降低Cocoapods的版本来解决第三方库的兼容问题.)
- 用Eclipse追PostgreSQL源码
- 根据已知的空间点,生成平衡罢叉树
- C++中的哑类
- 叶轮/叶片和旋翼故障诊断要点
- 集合栈
- java解析XML几种方式小结
- iOS开发——纯代码界面(UITabBarController,UINavigationController,UIImageView)
- PAT甲级 1001. A+B Format
- TransactionScope
- Linux中的Vim编辑工具基本命令
- JAVA IO-管道流
- 一些预处理方法的链接
- 第一个java程序解析