LeetCode 155 Min Stack

Posted 逗逗飞

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了LeetCode 155 Min Stack相关的知识,希望对你有一定的参考价值。

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.

题目描述

定义栈的数据结构,请在该类型中实现一个能够得到栈最小元素getMin函数。要求调用getMin,push, pop的时间复杂度均为O(1)

解题思路

一般求解线性结构中的求中最小元素,遍历一遍即可求出。

但如果这样做不满足本题要求:时间复杂度O(1)。

且栈结构,只能访问栈顶,否则破坏了栈结构。

因此必须在每次压栈的时候,都要确定此时栈中的最小元素。可以开个辅助数组保存。


代码:

class MinStack 
public:
    stack<int>s1,s2;// 一个存数据,一个辅助栈 
    
    void push(int value) 
        s1.push(value);
        if(s2.empty())
        	s2.push(value);
        else
        	s2.push(s2.top()<value?s2.top():value);
    
    void pop() 
        if(!s1.empty())
        
            s1.pop();
            s2.pop();
        
    
    int top() 
        return s1.top();
    
    int getMin() 
        return s2.top();
    
;


如果有更好的想法,欢迎交流!

以上是关于LeetCode 155 Min Stack的主要内容,如果未能解决你的问题,请参考以下文章

Java [Leetcode 155]Min Stack

LeetCode 155. Min Stack

Leetcode 155. Min Stack

LeetCode 155 Min Stack

leetcode155. Min Stack

leetcode-155-Min Stack