【leetcode】155. Min Stack(easy)

在栈的结构上多加一个getMin方法,返回栈中的最小值。
使用两个栈,一个来保存原有的值,另外一个初始push进去第一个值,当push第二个的时候,检查是不是比第一个小,如果比第二个栈的栈顶小,那么就push进去。

// 155 Min Stack
class MinStack{
	/** initialize your data structure here. */
public:
	MinStack() {

	}

	void push(int x) {
		s.push(x);
		if (m.empty() || x < m.top())
		{
			m.push(x);
		}
	}

	void pop() {
		if (s.top() == m.top())
		{
			m.pop();
		}
		s.pop();
	}

	int top() {
		return s.top();
	}

	int getMin() {
		return m.top();
	}

private:
	stack<int> s;
	stack<int> m; // min

};

不知道为啥我这个版本运行时出错。

class MinStack {
private:
    stack<int> s1;
    stack<int> s2;
public:
    void push(int x) {
	    s1.push(x);
	    if (s2.empty() || x <= getMin())  s2.push(x);	    
    }
    void pop() {
	    if (s1.top() == getMin())  s2.pop();
	    s1.pop();
    }
    int top() {
	    return s1.top();
    }
    int getMin() {
	    return s2.top();
    }
};
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值