劍指offer C 棧的壓入 彈出序列

2021-09-11 06:49:35 字數 704 閱讀 9846

建乙個輔助棧,模擬序列1按序列2順序的出棧,如1,2,3,4,5和4,5,3,2,1

序列1為空時,首先壓入1,序列2的首元素4,不等於當前棧頂,繼續壓入2,依然不等,繼續壓入3.........壓入4,當前棧頂元素等於序列2的首元素4,此時將4彈出,序列2元素索引加1,此時指向5。

此時棧頂元素為3,不等於5,繼續壓入序列1的5元素,此時相等,則將棧頂元素5彈出,序列2的索引加1,此時指向3。

此時棧頂元素為3,二者相等,則彈出棧頂元素,序列2索引加1,指向2。

此時棧頂元素為2,與序列2指向元素相等,繼續上述操作,直至序列2指向最後乙個元素,並且棧中元素全部匹配彈出。此時可判斷序列2是序列1的彈出序列。

**如下:

class solution 

if(s1.top()!=popv[j])//按照棧的特性,如果上面的子迴圈結束時棧頂元素和序列2指向的元素

//不等,則表示序列2不是序列1的彈出序列,直接break。

break;

s1.pop();

j++;

}if(s1.empty())

return true;

else

return false;}};

劍指Offer Python 棧的壓入 彈出序列

題目 棧的壓入 彈出序列 輸入兩個整數序列,第乙個序列表示棧的壓入順序,請判斷第二個序列是否可能為該棧的彈出順序。假設壓入棧的所有數字均不相等。例如序列1,2,3,4,5是某棧的壓入順序,序列4,5,3,2,1是該壓棧序列對應的乙個彈出序列,但4,3,5,1,2就不可能是該壓棧序列的彈出序列。注意 ...

劍指offer 棧的壓入 彈出序列

輸入兩個整數序列,第乙個序列表示棧的壓入順序,請判斷第二個序列是否為該棧的彈出順序。假設壓入棧的所有數字均不相等。例如序列1,2,3,4,5是某棧的壓入順序,序列4,5,3,2,1是該壓棧序列對應的乙個彈出序列,但4,3,5,1,2就不可能是該壓棧序列的彈出序列。分析 用乙個輔助棧模擬壓入彈出操作,...

劍指offer 棧的壓入 彈出序列

題目 輸入兩個整數序列,第乙個序列表示棧的壓入順序,請判斷第二個序列是否為該棧的彈出順序。假設壓入棧的所有數字均不相等。例如序列1,2,3,4,5是某棧的壓入順序,序列4,5,3,2,1是該壓棧序列對應的乙個彈出序列,但4,3,5,1,2就不可能是該壓棧序列的彈出序列。思路 解決這個問題很直觀地想法...