漫畫演算法筆記 最小棧
漫畫演算法筆記
最小棧
#include <iostream>
#include <stdlib.h>
#include <algorithm>
#include <vector>
#include <stack>
using namespace std;
template<typename T>
class MinStack
{
public:
//入棧
void push(T element)
{
_mainStack.push(element);
//如果輔助棧為空,或者新元素小於或等於輔助棧棧頂,則將新元素壓入輔助棧
if ( _minStack.empty() || element <= _minStack.top() )
{
_minStack.push(element);
}
}
//出棧
T pop()
{
//如果出棧元素和輔助棧棧頂元素值相等,輔助棧出棧
if ( _mainStack.top() == _minStack.top() )
{
_minStack.pop();
}
T tmp = _mainStack.top();
_mainStack.pop();
return tmp;
}
//獲取棧的最小元素
T getMin()
{
if ( _minStack.empty() )
{
throw exception("stack is empty");
}
return _minStack.top();
}
private:
stack<T> _mainStack;
stack<T> _minStack;
};
int main(int argc, char** argv)
{
MinStack<int> myStack;
myStack.push(4);
myStack.push(9);
myStack.push(7);
myStack.push(3);
myStack.push(8);
myStack.push(5);
cout << myStack.getMin() << endl; //3
myStack.pop();
myStack.pop();
myStack.pop();
cout << myStack.getMin() << endl; //4
system("pause");
return 0;
}
相關文章
- Leetcode 演算法題解系列 - 最小棧LeetCode演算法
- 齊姐漫畫:排序演算法(一)排序演算法
- 漫畫:什麼是LRU演算法?演算法
- LeetCode-最小棧LeetCode
- 155. 最小棧
- 155.最小棧
- 漫畫:三種 “奇葩” 的排序演算法排序演算法
- 漫畫 | 揭密微信誕生記
- 腐漫網,腐女漫畫網,漫畫網站網站
- 看動畫學演算法之:棧stack動畫演算法
- 【LeetCode】155. 最小棧LeetCode
- 棧的學習筆記筆記
- 暴走漫畫
- 《JavaScript資料結構與演算法》筆記——第3章 棧JavaScript資料結構演算法筆記
- 資料結構與演算法分析學習筆記(四) 棧資料結構演算法筆記
- 最小生成樹學習筆記筆記
- 閱讀筆記——架構漫談筆記架構
- 2018-11-24 最小棧
- leetcode.最小棧問題LeetCode
- 每日leetcode——155. 最小棧LeetCode
- 資料結構筆記——棧資料結構筆記
- JVM學習筆記之棧區JVM筆記
- 【漫畫講技術】CSS系列漫畫教程(11-15講)CSS
- 【漫畫講技術】CSS系列漫畫教程(6-10講)CSS
- 前端漫長的全棧之路前端全棧
- 漫畫 | 民間流傳的微信誕生記?
- 漫畫區塊鏈區塊鏈
- 資料結構學習筆記--棧資料結構筆記
- 【筆記】線段維護單調棧筆記
- 動漫&漫畫&音樂&小說 免費
- 靈魂畫手:漫畫圖解 SSH圖解
- 網路流最大流、最小割學習筆記筆記
- 演算法筆記整理演算法筆記
- 【筆記】辛普森演算法筆記演算法
- 王概凱《架構漫談》閱讀筆記架構筆記
- 王概凱架構漫談閱讀筆記架構筆記
- 極客漫畫:Windows 更新Windows
- 漫畫|面試風暴面試