日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問(wèn) 生活随笔!

生活随笔

當(dāng)前位置: 首頁(yè) > 编程语言 > python >内容正文

python

python 栈的压入弹出序列

發(fā)布時(shí)間:2025/3/21 python 35 豆豆
生活随笔 收集整理的這篇文章主要介紹了 python 栈的压入弹出序列 小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

| 棧的壓入和彈出序列

輸入兩個(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 之前彈出。

| 題解

class Solution:"""解題思路:1.p指針執(zhí)行pushed,q指針指向poped的第一個(gè)元素2.同時(shí)遍歷pushed 和 popped3.判斷p指針元素是否跟q指針元素相同1.如果不等 p指針后移一個(gè)單位,直到相等為止1.如果一直不等,返回false2.如果行等,讓行等的兩個(gè)元素出棧2.如果相等 讓相等的兩個(gè)元素出棧4.出棧后,p指針指向前一個(gè)元素 1.繼續(xù)判斷p和q是否相等1.如果相等 繼續(xù)出棧2.如果不等繼續(xù) p指針繼續(xù)后移5.知道遍歷結(jié)束1.判斷pushed和popped 是否為看空1.如果為空 返回True2.如果不為空 返回False"""def validateStackSequences(self, pushed: List[int], popped: List[int]) -> bool:length = len(pushed)p, q = 0, 0while length > p and length > q:if popped[q] == pushed[p]: pushed.pop(p)popped.pop(q)# 特殊情況處理,第一個(gè)元素都相等的情況下,# 因?yàn)樵匾呀?jīng)被移除,所以重置為0即第一元素p = p - 1 if p > 0 else 0else:p += 1# 從新計(jì)算length的長(zhǎng)度length = len(pushed)if length == 0:breakreturn False if pushed and popped else True

總結(jié)

以上是生活随笔為你收集整理的python 栈的压入弹出序列的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。

如果覺(jué)得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。