剑指offer-21:包含min函数的栈
来源:互联网 发布:linux 内核参数配置 编辑:程序博客网 时间:2024/05/20 19:49
定义栈的数据结构,在该类型中实现一个能够得到栈的最小元素的min函数,该栈中调用min, push, pop的时间复杂度都是O(1)。
分析:
- 要保持栈原本性质,就需要一个栈A存放原始数据
- 要得到栈当前最小元素,需要一个辅助栈B,专门存储当前的最小值
- A中压栈,B中压当前的最小值(要么是新的最小,要么是B栈顶最小)
代码:
// offer-21-stack_min.cpp : 定义控制台应用程序的入口点。////#include "stdafx.h"#include <iostream>#include <stack>using namespace std;// 定义一个类,表示新栈类型class StackMin {public: //压栈 void push(int value) { // 数据栈压栈 m_data.push(value); // 辅助栈压入新的最小 if(m_min.size()==0 || m_min.top() > value ) m_min.push(value); // 辅助栈压入原最小,仍为当前最小 else m_min.push(m_min.top()); } // 弹栈 void pop() { m_data.pop(); m_min.pop(); } // 获取当前栈顶,只和数据栈相关 int top() { return m_data.top(); } // 获取最小,只和辅助栈相关 int min() { return m_min.top(); }private: stack<int> m_data; // 数据栈 stack<int> m_min; // 存当前最小元素的栈};// 测试int _tmain(int argc, _TCHAR* argv[]){ Solution a; a.push(3); a.push(4); a.push(2); a.push(1); cout << a.min() << endl; a.pop(); cout << a.min() << endl; return 0;}
阅读全文
0 0
- 【剑指offer】包含min函数的栈
- 剑指offer--包含min函数的栈
- 剑指Offer-->包含min函数的栈
- 《剑指offer》包含min函数的栈
- 剑指offer - 包含min函数的栈
- 剑指offer-包含min函数的栈
- 剑指offer:包含min函数的栈
- 包含min函数的栈|剑指offer
- 剑指offer-包含min函数的栈
- 剑指offer 包含min函数的栈
- 剑指offer:包含min函数的栈
- 剑指offer 包含min函数的栈
- [剑指offer]包含min函数的栈
- 《剑指offer》-包含min函数的栈
- 剑指offer----包含min函数的栈
- 【剑指offer】包含min函数的栈
- 剑指offer|包含min函数的栈
- 《剑指offer》包含min函数的栈
- redis-cluster配置攻略 本人亲自尝试
- 去除PDF的水印【9种方法总结】
- up
- 复习知识
- 基于vue-cli的vue项目之axios的使用3--get传参请求
- 剑指offer-21:包含min函数的栈
- xxxxx has been explicitly marked deprecated here
- TreeView 父节点子节点勾选变化关联
- js数值四舍五入的方法以及其中潜在bug的解决方案
- linux用户切换
- 搭建基于OAuth2和SSO的开放平台
- mac env setting
- C++ 游戏服务器 后端编程【1】 纯心情总结
- Ubuntu中samba的安装和配置