剑指offer--面试题21:包含min函数的栈
2016-09-27 17:44
537 查看
python实现:
c++实现:
题目描述
定义栈的数据结构,请在该类型中实现一个能够得到栈最小元素的min函数。python实现:
# -*- coding:utf-8 -*- class Solution: def __init__(self): self.stack = [] self.minStack = [] def push(self, node): # write code here self.stack.append(node) if len(self.minStack)>0: node = min(node, self.minStack[-1]) self.minStack.append(node) def pop(self): # write code here #原题意不返回 if len(self.stack): self.minStack.pop() self.stack.pop() def top(self): # write code here if len(self.stack): return self.stack[-1] return None def min(self): # write code here if len(self.minStack): return self.minStack[-1] return None
c++实现:
class Solution { private: vector<int> stack; vector<int> minStack; public: void push(int value) { stack.push_back(value); if(!minStack.empty()){ int top = minStack.back(); value = std::min(top, value); } minStack.push_back(value); } void pop() { if(!stack.empty()){ stack.pop_back(); minStack.pop_back(); } } int top() { if(!stack.empty()){ return stack.back(); } return NULL; } int min() { if(!minStack.empty()){ return minStack.back(); } return NULL; } };