剑指offer--面试题21:包含min函数的栈

来源:互联网 发布:淘宝直播电脑端怎么看 编辑:程序博客网 时间:2024/05/16 12:42


题目描述

定义栈的数据结构,请在该类型中实现一个能够得到栈最小元素的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;    }};


0 0