包含min函数的栈
来源:互联网 发布:北师大网络教育官网 编辑:程序博客网 时间:2024/06/05 16:37
题目描述:
定义栈的数据结构,请在该类型中实现一个能够得到栈最小元素的min函数。
解法一:
push的时候跟min_val比较,如果比min_val小就更新min,pop的时候如果值与最小值相等,那么就循环stack查出最小值。
class Solution: def __init__(self,): self.stack = [] self.min_val = None def push(self, node): # write code here self.stack.append(node) if self.min_val is None: self.min_val = node elif self.min_val > node: self.min_val = node def pop(self): # write code here value = self.stack.pop(-1) if value == self.min_val: self.min_val = None for i in self.stack: if self.min_val is None: self.min_val = i elif self.min_val > i: self.min_val = i return value def top(self): # write code here return self.stack[-1:] def min(self): return self.min_val
解法二:
利用辅助栈,若每次push的值比min_stack的栈顶小,就压栈,否则就把min_stack的栈顶再次压栈,这样保持栈顶始终是最小值,也可以保证出现两个一样的最小值时,出栈也不会是min_val产生错误。
例 : 栈数据:3 4 2 5 1 1
最小栈:3 3 2 2 1 1,这样每次同步出栈就可以了。
class Solution: def __init__(self,): self.stack = [] self.min_stack= [] def push(self, node): # write code here self.stack.append(node) if not self.min_stack: self.min_stack.append(node) elif self.min_stack[-1] > node: self.min_stack.append(node) else: self.min_stack.append(self.min_stack[-1]) def pop(self): # write code here self.min_stack.pop(-1) return self.stack.pop(-1) def top(self): # write code here return self.stack[-1:] def min(self): return self.min_stack[-1]
阅读全文
0 0
- 包含min函数的栈
- 包含min函数的栈
- 包含min函数的栈
- 包含min函数的栈
- 包含min函数的栈
- 包含min函数的栈
- 包含min函数的栈
- 包含min函数的栈
- 包含min函数的栈
- 包含min 函数的栈
- 包含min函数的栈
- 包含min函数的栈
- 包含min函数的栈
- 包含min函数的栈
- 包含min函数的栈
- 包含min函数的栈
- 包含min函数的栈
- 包含min函数的栈
- python学习笔记 turtle类使用
- Oil Skimming HDU
- 9-EMM Scenario and Eleven EMM Cases
- JS——OOP1(console.dir)
- pthread_join
- 包含min函数的栈
- 使用Openembedded定制嵌入式Linux镜像
- 关于微信精选留言点赞刷赞之公众号评论点赞及文章评论点赞软件使用方法
- addChild的时候报出invalid 'cobj' in function 'lua_cocos2dx_Node_addChild'的错误
- 阿里云服务器部署otter实现数据双A同步过程记录(5)
- nyoj 题目6 喷水装置(贪心)
- Python配置VTK库
- Spinner设置第一次默认不被选中
- Java8新特性_四大内置核心函数式接口