Leetcode 1172. 餐盘栈 - python 解法
2020/1/16 14:11:12
本文主要是介绍Leetcode 1172. 餐盘栈 - python 解法,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!
题目链接: leetocde 1172
解题思路
这个题目用 python 做很简单
python 中使用 list 实现栈
我们定义几个类的属性:
-
self.s = [[]]
,一个list 的 list ,这里面是我们要操作的所有的栈 -
self.cur_id = 0
代表下一个 push 操作对应的栈的 id -
self.capacity
就是每个栈的容量
操作:
- push:需要先判断 cur_id 指向的栈还有没有空间,如果没有,看看右边还有没有栈,有就 cur_id 加一,否则添加新栈
- pop:判断最右边的栈是否有元素,没有就销毁栈并左移
- popAtStack:判断指定栈是否存在和有元素
代码
class DinnerPlates: def __init__(self, capacity: int): self.capacity = capacity self.s = [[]] self.cur_id = 0 def push(self, val: int) -> None: while True: if len(self.s[self.cur_id]) < self.capacity: break self.cur_id += 1 if len(self.s) == self.cur_id: self.s.append([]) self.s[self.cur_id].append(val) def pop(self) -> int: i = len(self.s)-1 while not self.s[i]: if i == 0: return -1 self.s.pop() i -= 1 self.cur_id = min(self.cur_id, i) return self.s[i].pop() def popAtStack(self, index: int) -> int: if index < len(self.s) and self.s[index]: self.cur_id = min(self.cur_id, index) return self.s[index].pop() return -1 # Your DinnerPlates object will be instantiated and called as such: # obj = DinnerPlates(capacity) # obj.push(val) # param_2 = obj.pop() # param_3 = obj.popAtStack(index)
这篇关于Leetcode 1172. 餐盘栈 - python 解法的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!
- 2024-11-21Python编程基础教程
- 2024-11-20Python编程基础与实践
- 2024-11-20Python编程基础与高级应用
- 2024-11-19Python 基础编程教程
- 2024-11-19Python基础入门教程
- 2024-11-17在FastAPI项目中添加一个生产级别的数据库——本地环境搭建指南
- 2024-11-16`PyMuPDF4LLM`:提取PDF数据的神器
- 2024-11-16四种数据科学Web界面框架快速对比:Rio、Reflex、Streamlit和Plotly Dash
- 2024-11-14获取参数学习:Python编程入门教程
- 2024-11-14Python编程基础入门