18.包含min函数的栈

包含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;
}


你可能感兴趣的:(18.包含min函数的栈)