本篇文章為大家展示了如何進(jìn)行包含函數(shù)的棧分析,內(nèi)容簡(jiǎn)明扼要并且容易理解,絕對(duì)能使你眼前一亮,通過這篇文章的詳細(xì)介紹希望你能有所收獲。
我們提供的服務(wù)有:做網(wǎng)站、成都網(wǎng)站制作、微信公眾號(hào)開發(fā)、網(wǎng)站優(yōu)化、網(wǎng)站認(rèn)證、古浪ssl等。為上千多家企事業(yè)單位解決了網(wǎng)站和推廣的問題。提供周到的售前咨詢和貼心的售后服務(wù),是有科學(xué)管理、有技術(shù)的古浪網(wǎng)站制作公司
定義棧的數(shù)據(jù)結(jié)構(gòu),請(qǐng)?jiān)谠擃愋椭袑?shí)現(xiàn)一個(gè)能夠得到棧的最小元素的 min 函數(shù)在該棧中,調(diào)用 min、push 及 pop 的時(shí)間復(fù)雜度都是 O(1)。
示例:
MinStack minStack = new MinStack();
minStack.push(-2);
minStack.push(0);
minStack.push(-3);
minStack.min(); --> 返回 -3.
minStack.pop();
minStack.top(); --> 返回 0.
minStack.min(); --> 返回 -2.
提示:
各函數(shù)的調(diào)用總次數(shù)不超過 20000 次
解題思路:
1,注意本題是棧,需要和隊(duì)列那個(gè)區(qū)分開
2,維護(hù)一個(gè)最小值棧
3,push 如果當(dāng)前元素比最小值棧頂元素小,則放棄,否則插入
4,pop 如果棧頂元素和最小值棧頂元素相等,則同時(shí)出棧
5,注意細(xì)節(jié),元素和最小值棧頂元素相等也要入棧
復(fù)習(xí)下 隊(duì)列那個(gè)題目
1,需要維護(hù)一個(gè)最小值雙端隊(duì)列
2,每次入隊(duì)的時(shí)候從后往前找,找到比插入元素?。ù螅┑脑?,舍棄隊(duì)列后面元素,將當(dāng)前元素插入
代碼實(shí)現(xiàn)
type MinStack struct {
data []int
minData []int
}
/** initialize your data structure here. */
func Constructor() MinStack {
return MinStack{}
}
func (this *MinStack) Push(x int) {
this.data=append(this.data,x)
if len(this.data)==1{
this.minData=append(this.minData,x)
return
}
l:=len(this.minData)
if x<=this.minData[l-1]{
this.minData=append(this.minData,x)
}
}
func (this *MinStack) Pop() {
if len(this.data)==0{
return
}
l:=len(this.data)
v:=this.data[l-1]
this.data=this.data[:l-1:l-1]
l1:=len(this.minData)
if v==this.minData[l1-1]{
this.minData=this.minData[:l1-1:l1-1]
}
return
}
func (this *MinStack) Top() int {
if len(this.data)==0{
return -1
}
return this.data[len(this.data)-1]
}
func (this *MinStack) Min() int {
if len(this.data)==0{
return -1
}
return this.minData[len(this.minData)-1]
}
/**
* Your MinStack object will be instantiated and called as such:
* obj := Constructor();
* obj.Push(x);
* obj.Pop();
* param_3 := obj.Top();
* param_4 := obj.Min();
*/
上述內(nèi)容就是如何進(jìn)行包含函數(shù)的棧分析,你們學(xué)到知識(shí)或技能了嗎?如果還想學(xué)到更多技能或者豐富自己的知識(shí)儲(chǔ)備,歡迎關(guān)注創(chuàng)新互聯(lián)行業(yè)資訊頻道。