小編給大家分享一下golang刷leetcode技巧之如何實(shí)現(xiàn)棧的壓入、彈出序列,希望大家閱讀完這篇文章之后都有所收獲,下面讓我們一起去探討吧!
創(chuàng)新互聯(lián)主要業(yè)務(wù)有網(wǎng)站營(yíng)銷策劃、成都網(wǎng)站建設(shè)、成都做網(wǎng)站、微信公眾號(hào)開(kāi)發(fā)、成都微信小程序、H5高端網(wǎng)站建設(shè)、程序開(kāi)發(fā)等業(yè)務(wù)。一次合作終身朋友,是我們奉行的宗旨;我們不僅僅把客戶當(dāng)客戶,還把客戶視為我們的合作伙伴,在開(kāi)展業(yè)務(wù)的過(guò)程中,公司還積累了豐富的行業(yè)經(jīng)驗(yàn)、營(yíng)銷型網(wǎng)站建設(shè)資源和合作伙伴關(guān)系資源,并逐漸建立起規(guī)范的客戶服務(wù)和保障體系。
輸入兩個(gè)整數(shù)序列,第一個(gè)序列表示棧的壓入順序,請(qǐng)判斷第二個(gè)序列是否為該棧的彈出順序。假設(shè)壓入棧的所有數(shù)字均不相等。例如,序列 {1,2,3,4,5} 是某棧的壓棧序列,序列 {4,5,3,2,1} 是該壓棧序列對(duì)應(yīng)的一個(gè)彈出序列,但 {4,3,5,1,2} 就不可能是該壓棧序列的彈出序列。
示例 1:
輸入:pushed = [1,2,3,4,5], popped = [4,5,3,2,1]
輸出:true
解釋:我們可以按以下順序執(zhí)行:
push(1), push(2), push(3), push(4), pop() -> 4,
push(5), pop() -> 5, pop() -> 3, pop() -> 2, pop() -> 1
示例 2:
輸入:pushed = [1,2,3,4,5], popped = [4,3,5,1,2]
輸出:false
解釋:1 不能在 2 之前彈出。
提示:
0 <= pushed.length == popped.length <= 1000
0 <= pushed[i], popped[i] < 1000
pushed 是 popped 的排列。
解題思路
1,本題主要考察入棧出棧的理解
2,golang slice可以很容易實(shí)現(xiàn)棧
3,每次pushed入棧后popped 進(jìn)行比較
4,如果棧非空,且poped的當(dāng)前元素和棧頂元素相等,則出棧,同時(shí)右移popped指針
代碼實(shí)現(xiàn)
func validateStackSequences(pushed []int, popped []int) bool {
var s stack
j:=0
for i:=0;i<len(pushed);i++{
s.push(pushed[i])
for !s.empty() && s.top()==popped[j]{
s.pop()
j++
//if j<len(popped){
// fmt.Println("inner:",s.data,i,j,popped[j],s.top())
//}
}
//if j<len(popped){
//fmt.Println(s.data,i,j,popped[j])
//}
}
return s.empty() && j==len(popped)
}
type stack struct{
data []int
}
func (s *stack )push(v int){
s.data=append(s.data,v)
}
func (s *stack)pop()int{
v:=s.data[len(s.data)-1]
s.data=s.data[:len(s.data)-1]
return v
}
func(s*stack)top()int{
return s.data[len(s.data)-1]
}
func (s*stack)empty()bool{
return len(s.data)==0
}
看完了這篇文章,相信你對(duì)“golang刷leetcode技巧之如何實(shí)現(xiàn)棧的壓入、彈出序列”有了一定的了解,如果想了解更多相關(guān)知識(shí),歡迎關(guān)注創(chuàng)新互聯(lián)行業(yè)資訊頻道,感謝各位的閱讀!
網(wǎng)站名稱:golang刷leetcode技巧之如何實(shí)現(xiàn)棧的壓入、彈出序列
轉(zhuǎn)載來(lái)源:http://sd-ha.com/article2/iedhic.html
成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供虛擬主機(jī)、微信小程序、做網(wǎng)站、搜索引擎優(yōu)化、網(wǎng)站改版、外貿(mào)建站
聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請(qǐng)盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如需處理請(qǐng)聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來(lái)源: 創(chuàng)新互聯(lián)