国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 學院 > 開發設計 > 正文

算法7:設計一個class,類似于stack, 但可以是O(1)時間內返回min()

2019-11-06 06:09:48
字體:
來源:轉載
供稿:網友

解題思路

類中存一個數據棧和一個輔助棧,向數據棧push的時候,判斷當前值與輔助棧棧頂的值的大小,如果小則push到輔助棧,否則push輔助棧的棧頂數值到輔助棧;向數據棧pop時,同時pop輔助棧的值。獲取當前數值最小值即輔助棧棧頂數據,時間復雜度為O(1)

MinStack類定義

#include <stack>using namespace std;class MinStack{public: MinStack(); ~MinStack(); //棧的push操作 void Push(int value); //棧的pop操作 int Pop(); //獲取最小值操作 int Min(); //判斷棧是否為空 bool IsEmpty();PRivate: stack<int> dataStack; stack<int> minStack;};

MinStack類實現

#include "stdafx.h"#include "MinStack.h"#include <iostream>using namespace std;MinStack::MinStack(){}MinStack::~MinStack(){}void MinStack::Push(int data){ dataStack.push(data); //向minStack push當前最小值 if(minStack.empty() || data < minStack.top()) { minStack.push(data); } else { minStack.push(minStack.top()); }}int MinStack::Pop(){ if(IsEmpty()) { cout<<"stack is empty,can't pop"<<endl; return -1; } //獲取棧頂數據 int data = dataStack.top(); dataStack.pop(); minStack.pop(); return data;}bool MinStack::IsEmpty(){ if(dataStack.empty()) { return true; } return false;}int MinStack::Min(){ if(minStack.empty()) { cout<<"min stack is empty"<<endl; return -1; } return minStack.top();}

測試代碼

#include "stdafx.h"#include "MinStack.h"#include <iostream>using namespace std;int _tmain(int argc, _TCHAR* argv[]){ cout<<"please input minStack"<<endl; MinStack minStack; int data = 0; for(int i = 0; i < 8; i++) { cin>>data; minStack.Push(data); cout<<"min data is "<<minStack.Min()<<endl; } minStack.Pop(); cout<<"after pop one data, the min data is "<<minStack.Min()<<endl; minStack.Pop(); cout<<"after pop one data, the min data is "<<minStack.Min()<<endl; minStack.Pop(); cout<<"after pop one data, the min data is "<<minStack.Min()<<endl; return 0;}
發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 金寨县| 原阳县| 江陵县| 南康市| 吕梁市| 盱眙县| 金坛市| 恩施市| 靖江市| 文登市| 涟源市| 田东县| 清苑县| 义乌市| 宕昌县| 乐业县| 古蔺县| 本溪市| 梁河县| 泸水县| 石屏县| 神农架林区| 丹凤县| 民勤县| 大化| 临湘市| 晋城| 滦平县| 垣曲县| 措勤县| 鹤壁市| 延长县| 神池县| 洛扎县| 蒙城县| 彩票| 田林县| 东阳市| 邵阳市| 泌阳县| 奎屯市|