zoukankan      html  css  js  c++  java
  • 集合栈

    题目描述
    请实现一种数据结构SetOfStacks,由多个栈组成,其中每个栈的大小为size,当前一个栈填满时,新建一个栈。该数据结构应支持与普通栈相同的push和pop操作。

    给定一个操作序列int[][2] ope(C++为vector&ltvector&ltint>>),每个操作的第一个数代表操作类型,若为1,则为push操作,后一个数为应push的数字;若为2,则为pop操作,后一个数无意义。请返回一个int[],为完成所有操作后的SetOfStacks,顺序应为从下到上,默认初始的SetOfStacks为空。保证数据合法。

    solution:

    # -*- coding:utf-8 -*-
    class SetOfStacks:
        def __init__(self):
            self.stack = []
            self.size = None
    
        def setOfStacks(self, ope, size):
            if not ope:
                return []
            self.size = size
            for op in ope:
                if op[0]==1:
                    self.push(op[1])
                else:
                    self.pop()
            return self.stack
    
        def push(self,value):
            if not self.stack:
                self.stack.append([])
            if len(self.stack[-1]) < self.size:
                self.stack[-1].append(value)
            else:
                self.stack.append([value])
    
        def pop(self):
            if self.stack and self.stack[-1]:
                top = self.stack[-1].pop()
                if not self.stack[-1]:
                    self.stack.pop()
                return top
    
  • 相关阅读:
    迭代器与生成器
    函数
    Java多线程
    JVM垃圾回收
    JVM内存模型
    面向对象的特征和原则
    Java代码规范
    安装yum
    虚机ping:www.baidu.com报错
    创建好centos7虚拟机之后连xshell连不上虚机
  • 原文地址:https://www.cnblogs.com/bernieloveslife/p/11182465.html
Copyright © 2011-2022 走看看