[剑指offer]JT20---包含min函数的栈(把最小值存下来不就好了?)

剑指offer第二十题

题目如下

在这里插入图片描述

思路与代码

我们会用到两个栈
一个放元素。另一个放最小元素。

  1. 那么出栈的时候两个值相同就一起出栈,否则只有第一个放元素的栈出栈
  2. 返回top的时候直接范围放元素的栈的top即可
  3. 最小值当然就是第二个放最小元素的栈的top了
class Solution {
    
    
public:
    stack<int> s1;
    stack<int> s2;
    void push(int value) {
    
    
        s1.push(value);
        if(s2.empty()||s2.top()>value) s2.push(value);
    }
    void pop() {
    
    
        if(s1.top()==s2.top()) s2.pop();
        s1.pop();
    }
    int top() {
    
    
        return s1.top();
    }
    int min() {
    
    
        return s2.top();     
    }
};

在这里插入图片描述

猜你喜欢

转载自blog.csdn.net/qq_42136832/article/details/114583659