題目:設計包含min函式的棧,pop(),push(),min()的時間複雜度均為o(1)
自己所寫**如下:(寫『棧』的**還是有些不熟練!)
#include usingnamespace
std;
const
int max = 100
;class
stack
;stack::stack()
stack::~stack()
bool stack::empty() const
int stack::top() const
else
}void stack::push(int
n) }
else
cerr
<<"
stack is full!
"<}void
stack::pop()
else
cerr
<<"
stack is empty!
"<}int
stack::min()
}
#include "stdafx.h
"#include
#include
"stack.h
"using
namespace
std;
intmain()
此題未考慮成熟! 需要的是輔助棧而非輔助變數!!!
修改如下:
//思路:首先,自己之前編寫的棧正是作者所說的第二種行不通的;
//此時,若深入想下去,就可能因為需要更多的成員變數而想到再設定乙個棧!
//解決本題的關鍵:想到設定輔助棧,而且通過例子來模擬push,pop和min函式
//關鍵中的關鍵:min函式的操作如何達到o(1),或者說是輔助棧的入棧與出棧
//默寫**如下:
//利用stl中的stack,並將stackwithmin寫成類模板
#includetemplate
class
stackwithmin
;template
stackwithmin
::stackwithmin()
template
stackwithmin
::~stackwithmin()
template
bool stackwithmin::empty() const
template
t stackwithmin
::top() const
template
void stackwithmin::push(const t&n)
else
}template
void stackwithmin::pop()
else
std::cout
<<"
stack is empty!
"<}template
t stackwithmin
::min() const
template
size_t stackwithmin
::size() const
劍指offer面試題21
面試題21 包含min函式的棧 題目 定義棧的資料結構,請在該型別中實現乙個能夠得到棧的最小元素的min函式。在該棧中,呼叫min push及pop的時間複雜度都是o 1 預備知識 棧的定義 模板函式 思路 面對乙個複雜的問題,我們可以舉幾個具體的例子來尋找規律,對於本題目,我們可以通過舉例來分析它...
《劍指offer》陣列相關面試題
在乙個長度為n的陣列裡所有數字都在0 n 1範圍內。陣列中某些數字是重複的,但不知道有幾個數字重複,也不知道重複了幾次,請找出陣列中任意乙個重複的數字。例如,長度為7的陣列,那麼對應的輸出應該是重複的數字2或者3.思路 重排這個陣列,從頭到尾依次掃瞄這個陣列中的每個數字。掃到下標為i的數字m時 首先...
面試題4 相關題目
題目 有兩個排序陣列a1和a2,內存在a1後面有足夠的空間容納a2。實現乙個函式,把a2中的數字插入到a1,並且所有的數字是排序的。示例 includeusing namespace std 兩個有序陣列a1和a2,a1後面有足夠的記憶體容納a2,將a2插入到a1中,使結果有序 bool inser...