您的位置:首页 > 其它

18.包含min函数的栈

2016-05-05 19:33 246 查看
包含min函数的栈

参与人数:3793时间限制:1秒空间限制:32768K

本题知识点:

算法知识视频讲解


题目描述

定义栈的数据结构,请在该类型中实现一个能够得到栈最小元素的min函数。

剑指offer上的例子讲解的非常精彩。

在线编译时遇到错误:

error: control may reach end of non-void function [-Werror,-Wreturn-type]
意为无法找到non-void function的返回值。

// 17.cpp : 定义控制台应用程序的入口点。
//

#include "stdafx.h"
#include <stack>
using namespace::std;

class Solution {
public:
stack<int> dataStack;
stack<int> minStack;
int minVal;

void push(int value) {
dataStack.push(value);
if (minStack.empty()) {
minStack.push(value);
minVal = value;
}
else {
int minNow = minStack.top();
if (minNow >= value) {
minStack.push(value);
minVal = value;
}
else {
minStack.push(minNow);
}
}
}

void pop() {
if (!dataStack.empty()) {
dataStack.pop();
}
if (!minStack.empty()) {
minVal = minStack.top();
minStack.pop();
}
}

int top() {
if (!dataStack.empty()) {
return dataStack.top();
}
}

int min() {
return minVal;
}
};

int _tmain(int argc, _TCHAR* argv[])
{
Solution s;

s.push(3);
int n = s.min();

s.push(4);
n = s.min();

s.push(2);
n = s.min();

s.push(3);
n = s.min();

s.pop();
n = s.min();
s.pop();
n = s.min();
s.pop();
n = s.min();

s.push(0);
n = s.min();
return 0;
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: