劍指Offer 數字出棧入棧

2021-07-22 11:45:55 字數 521 閱讀 6967

題目描述

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

bool is_pop_order(vector

& pushv,vector

& popv)

stack

tmp;

int popindex = 0;

for(int i = 0;i < pushv.size();i++)

if(pushv[i] == popv[popindex])else

while(!tmp.empty() && tmp.top() == popv[popindex])

return popindex == popv.size();

}}

劍指offer 入棧 出棧正確性的判斷

判斷元素出棧 入棧順序的合法性。如 入棧的序列 1,2,3,4,5 出棧序列 是 4,5,3,2,1 是合法序列,入棧的序列 1,2,3,4,5 出棧序列為 1,5,3,2,4 是不合法序列 我的解題思路 建立乙個輔助棧來模擬入棧與出棧過程,從而判斷其入棧 出棧順序是否合法。定義兩個陣列in與out...

劍指offer 合法的出棧序列

題目 合法的出棧序列 這個題我模擬了,寫的有點麻煩。基本思路是考慮出棧序列,對於每乙個出棧元素,進行模擬,因為如果當前元素要出棧,那麼證明他以及他之前的元素都在棧內。所以,將之前的元素入棧即可。可以寫如下判斷邏輯 1.如果當前出棧元素在棧裡面 其實用集合判斷 只需判斷棧頂和當前出棧元素是否一樣。如果...

棧的入棧,出棧,顯示入棧元素

要實現的功能如下 printf t t1.入棧 n printf t t2.出棧 n printf t t3.顯示棧內元素 n define maxsize 5 巨集定義 typedef struct stack 定義棧 void push stack p,int e void printstack...