每日一题(34) - 包含最小值Min函数的栈

来源:互联网 发布:初中毕业网络教育大专 编辑:程序博客网 时间:2024/05/20 07:18

题目来自剑指offer

题目


思路:除了栈的基本结构以外,另外维护一个数组保存最小值

代码

#include <iostream>#include <assert.h>using namespace std;class Stack{public:Stack();int Pop();void Push(int nData);int Min();private:int m_nTop;int m_nArrData[100];int m_nArrMin[100];};Stack::Stack(){m_nTop = -1;}int Stack::Pop(){assert(m_nTop >= 0);return m_nArrData[m_nTop--];}void Stack::Push(int nData){assert(m_nTop < 99);m_nArrData[++m_nTop] = nData;//设置最小值数组if (m_nTop == 0 || nData < m_nArrMin[m_nTop - 1]){m_nArrMin[m_nTop] = nData;}else{m_nArrMin[m_nTop] = m_nArrMin[m_nTop - 1];}}int Stack::Min(){assert(m_nTop > -1);return m_nArrMin[m_nTop];}int main(){int nArr[4] = {3,4,2,1};Stack s;for (int i = 0;i < 4;i++){s.Push(nArr[i]);cout<<"Min Num: "<<s.Min()<<endl;}for (int i = 0;i < 4;i++){cout<<"Min Num: "<<s.Min()<<endl;s.Pop();}return 1;}


原创粉丝点击