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


    思路分析

    维护一个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]
            
    
  • 相关阅读:
    django上传下载大文件
    ssh隧道技术
    防止网站被抓
    lvm在线扩容
    Python之配置文件模块 ConfigParser
    Oracle常用查询
    Oracle_where子句
    Oracle_单行函数
    Oracle_多行函数
    Oracle_SQL92_连接查询
  • 原文地址:https://www.cnblogs.com/Rowry/p/14305334.html
Copyright © 2020-2023  润新知