栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > C/C++/C#

作文以记之 ~ 最小栈

C/C++/C# 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

作文以记之 ~ 最小栈

作文以记之 ~ 最小栈
  • 0、前言
  • 1、题目描述
  • 2、解题思路
    • 2.1 方法1 ~ 利用stack
      • 2.1.1 思路
      • 2.1.2 程序代码
    • 2.2 方法2 ~ 利用vector
      • 2.2.1 思路
      • 2.1.2 程序代码

0、前言

本篇博客是力扣上 155. 最小栈 题的题解,挺简单的,就是想写个博客!

GitHub上相关内容可 点击此处 进行查看!

1、题目描述

2、解题思路 2.1 方法1 ~ 利用stack 2.1.1 思路

此处就是利用两个栈去实现问题目标,有点像利用栈实现队列的感觉。具体可直接看下述代码!

2.1.2 程序代码
class MinStack {
public:
    
    MinStack() {

    }
    
    void push(int val) {
        tmp.push(val);
        if(res.empty() || res.top() >= val)
            res.push(val);
    }
    
    void pop() {
        if(res.top() == tmp.top())
            res.pop();
        tmp.pop();
    }
    
    int top() {
        return tmp.top();
    }
    
    int getMin() {
        return res.top();
    }
private:
    stack tmp;
    stack res;

};


2.2 方法2 ~ 利用vector 2.2.1 思路

此处思路就是将所有数据存入数组中,然后当输出最小值时对数组内数据进行遍历找出目标数据即可!

2.1.2 程序代码
class MinStack {
public:
    MinStack() {
        
    }
    
    void push(int val) {
        _data.push_back(val);
    }
    
    void pop() {
        if(!_data.empty())
            _data.pop_back();
    }
    
    int top() {
        return _data[_data.size()-1];
    }
    
    int getMin() {
        int minnum = INT_MAX;
        for(int& d:_data)
            minnum = min(minnum,d);
        return minnum;
    }
private:
    vector _data;
};


转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/920568.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号