前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >leetcode-155-Min Stack

leetcode-155-Min Stack

作者头像
chenjx85
发布2018-05-21 18:41:23
5800
发布2018-05-21 18:41:23
举报
文章被收录于专栏:chenjx85的技术专栏

题目描述:

Design a stack that supports push, pop, top, and retrieving the minimum element in constant time.

  • push(x) -- Push element x onto stack.
  • pop() -- Removes the element on top of the stack.
  • top() -- Get the top element.
  • getMin() -- Retrieve the minimum element in the stack.

Example:

代码语言:javascript
复制
MinStack minStack = new MinStack();
minStack.push(-2);
minStack.push(0);
minStack.push(-3);
minStack.getMin();   --> Returns -3.
minStack.pop();
minStack.top();      --> Returns 0.
minStack.getMin();   --> Returns -2.

要完成的函数:

class MinStack { public:

  MinStack()

  void push(int x)

  void pop() 

  int top() 

  int getMin()

}

说明:

1、这道题目让我们设计一个栈,支持常规的入栈、出栈、读出栈顶元素的操作,同时支持时间复杂度为O(1)的读出栈内最小元素的操作。

2、原本要定义一个数组,但是数组自己动态定义比较麻烦,于是偷懒,使用了vector来实现。

3、时间复杂度有限制,最容易想到的解决办法就是增加空间复杂度,多定义一个vector来使用。解决问题。

代码:(本代码不支持空栈的栈顶元素读出和空栈的元素出栈,以及空栈的读出最小元素,只是一个简易的代码)

代码语言:javascript
复制
class MinStack {
public:
    vector<int>array;
    vector<int>min;
    MinStack() 
    {
        min.push_back(INT_MAX);
    }
    
    void push(int x)
    {
        if(x<min.back())
            min.push_back(x);
        else
            min.push_back(min.back());
        array.push_back(x);
    }
    
    void pop() 
    {
        array.pop_back();
        min.pop_back();
    }
    
    int top() 
    {
        return array.back();
    }
    
    int getMin() 
    {
        return min.back();
    }
};
本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2018-04-09 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 题目描述:
  • 要完成的函数:
  • 说明:
  • 代码:(本代码不支持空栈的栈顶元素读出和空栈的元素出栈,以及空栈的读出最小元素,只是一个简易的代码)
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档