面试题21. 包含min函数的栈
来源:互联网 发布:emmc5.0和5.1 linux 编辑:程序博客网 时间:2024/05/17 07:15
题目描述
定义栈的数据结构,请在该类型中实现一个能够得到栈最小元素的min函数。
思路:
考察栈的使用。代码中用到两个栈:
a. 用栈 stack 记录所有元素的值
b. 用辅助栈 min_stack 始终记录每次压栈时的最小元素,min_stack的栈顶就是当前的最小元素
具体操作如下:
- 假设我们要把数据A入栈,
- 如果A小于等于 min_stack 的栈顶元素,则同时向stack和min_stack压入A
- 否则,向min_stack压入min_stack的栈顶元素,向stack压入A
- 出栈时,stack和min_stack同时出栈
java 代码如下:
import java.util.Stack;public class Solution { Stack<Integer> stack = new Stack(); Stack<Integer> min_stack = new Stack(); public void push(int node) { if(min_stack.isEmpty() || node <= min_stack.peek()) { min_stack.push(node); }else { min_stack.push(min_stack.peek()); } stack.push(node); } public void pop() { min_stack.pop(); stack.pop(); } public int top() { return stack.peek(); } public int min() { return min_stack.peek(); }}
python 代码如下:
# -*- coding:utf-8 -*-class Solution: stack = [] min_stack = [] def push(self, node): if len(self.stack) == 0 or node <= self.stack[-1]: self.min_stack.append(node) else: self.min_stack.append(self.min()) self.stack.append(node) def pop(self): self.min_stack.pop() self.stack.pop() def top(self): return self.stack[-1] def min(self): return self.min_stack[-1]
阅读全文
0 0
- 剑指offer-面试题21.包含min函数的栈
- 面试题21. 包含min函数的栈
- 面试题12 - 包含 min 函数的栈 【栈】
- 面试题21:栈:包含min函数的栈
- 面试题---设计包含min函数的栈
- 《微软面试题》设计包含min函数的栈
- 面试题---设计包含min函数的栈
- 面试题19:包含min函数的栈
- [剑指offer][面试题21]包含min函数的栈
- 【面试题二十一】包含min函数的栈
- 面试题三:设计包含 min 函数的栈。
- 剑指offer 面试题21:包含min函数的栈
- 【剑指offer】面试题21:包含min函数的栈
- 【剑指offer】面试题21:包含min函数的栈
- 剑指Offer:面试题21 包含min函数的栈
- 面试题21 包含min函数的栈
- 剑指offer 面试题21 包含min函数的栈
- 面试题21:包含min函数的栈
- CMS介绍
- 【剑指offer-解题系列(50)】把字符串转换成整数
- linux学习共享服务之samba
- Android弹幕实现:基于B站弹幕开源系统(7)QQ、微信聊天气泡样式的弹幕
- 运维小白的python之路(六)——面向对象
- 面试题21. 包含min函数的栈
- 智能卡脱机支付交易流程分析
- pywintypes.com_error: (-2147352567, '发生意外 解决方案 :出现在Python调用WPS中
- AndroidStudio中通过依赖使用zxing扫一扫简单使用
- .net reflector
- 一个贼强的命令
- selector
- js在当前时间后或前添加或减少几个月
- 045-Java-036