建乙個輔助棧,模擬序列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就不可能是該壓棧序列的彈出序列。思路 解決這個問題很直觀地想法...