首页 > 其他 > 详细

剑指offer | 包含min函数的栈 | 09

时间:2021-01-20 23:27:55      阅读:31      评论:0      收藏:0      [点我收藏+]

技术分享图片

思路分析

维护一个Smin的栈, 这个Smin保存的着前几个元素的最小值.

S:    [-1,3,-4]
Smin: [-1,-1,-4]
加入一个x
S:    [-1,3,-4,x]
Smin: [-1,-1,-4,min(-4,x)]

cpp

class Solution {
public:
    stack<int> S,Smin;
    void push(int value) {
        int x = value;
        S.push(x);
        if(Smin.empty())Smin.push(x);
        else Smin.push(x<Smin.top()?x:Smin.top());
    }
    void pop() {
        S.pop();
        Smin.pop();
    }
    int top() {
        return S.top();
    }
    int min() {
        return Smin.top();        
    }
};

python

# -*- coding:utf-8 -*-
class Solution:
    def __init__(self):
        self.S,self.Smin=[],[]
    def push(self, node):
        self.S.append(node)
        if not self.Smin:self.Smin.append(node)
        else:self.Smin.append(node if node<self.Smin[-1] else self.Smin[-1])
    def pop(self):
        self.S.pop()
        self.Smin.pop()
    def top(self):
        return self.S[-1]
    def min(self):
        return self.Smin[-1]
        

剑指offer | 包含min函数的栈 | 09

原文:https://www.cnblogs.com/Rowry/p/14305334.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!