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

mac2022-06-30  92

集合栈 牛客网 程序员面试金典 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:496k vector<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:5712k def setOfStacks(self, ope, size): if size < 1: return None if None == ope: return None ret = [] 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):pass else: if len(lt) == 0:lt = ret.pop() lt.pop() ret.append(lt) return ret

 

转载于:https://www.cnblogs.com/vercont/p/10210298.html

相关资源:JAVA上百实例源码以及开源项目
最新回复(0)