實現乙個棧,要求實現push(出棧)、pop(入棧)、min(返回最小值的操作)的時間複雜度為o(1)
(1)建立兩個棧,乙個為普通的容納資料的棧stackdata,乙個為stackmin的棧用來返回最小值
(2)壓入資料時,stackdata直接壓入資料newnum
` stackmin若為空,直接壓入資料newnum。若不為空
若不為空,則則比較要壓入資料newnum與stackmin的top()的值,如果numnew<=sstackmin.top()則壓入newnum,否則壓入sstackmin.top()
(3)彈出資料時,兩個stack同時彈出資料
(4)返回最小值操作時,直接返回stackmin的top()
template//模版沒寫乙個函式都要去測試一下
class stackwithmin
;//將會自動去掉對應的建構函式和析構函式
virtual ~stackwithmin(){};
void push(const t& x);
void pop();
const t& min()const;//不是棧空間的變數,所以可以直接加引用返回,但是不能改變其的值,所以加const
t& top();
bool empty() const;
size_t size()const;
private:
stackstackdata;//資料棧,存放棧的所有元素 //使用類模板需要模板引數列表,沒有特例話的模版引數
stackstackmin;//輔助棧,存放棧中的最小元素
};
templatevoid stackwithmin::push(const t& x)
templatevoid stackwithmin::pop()
templateconst t& stackwithmin::min()const
templatet& stackwithmin::top()
templatebool stackwithmin::empty()const
設計乙個具有getMin 功能的棧
設計乙個具有getmin 功能的棧 1.push pop getmin 時間複雜度為o 1 2.設計棧時可以使用現有的棧結構 設計乙個具有getmin 功能的棧 1.pop,push,getmin 時間複雜度為o 1 2.設計的棧可以使用現有的棧結構 author nemo public class...
乙個有getMin功能的棧
前言 這是學習 程式設計師 面試指南 一書的第一篇文章,也是部落格的第一篇文章,給自己加油,從現在開始堅持記錄學習。題目 實現乙個特殊的棧,在實現棧的基本功能的基礎上,再實現返回棧中最小值的操作。要求 1.pop push getmin操作的時間複雜度都是o 1 2.設計的棧型別可以使用現成的棧結構...
設計乙個帶有getMin功能的棧
題目 實現乙個特殊的棧,在實現棧的基本功能的基礎上,再實現返回棧中最小元素的操作。要求 1,pop,push,getmin操作的時間複雜度都是o 1 注 1,設計的棧型別可以使用現有的棧結構。思路 可以考慮使用兩個棧來進行設計,乙個棧用來儲存當前棧中的元素,其功能和乙個正常的棧沒有區別,這個棧記為s...