一道值得思考的資料結構題目(入棧與出棧序列)

2021-07-28 02:47:23 字數 758 閱讀 6103

就業指導課上做的一道資料結構中有關棧的題目,當時一開始自己思考不全面,錯選了。

乙個棧的入棧序列為1,2,3,…,n ,其出棧序列是 p 1 ,p 2 ,p 3 ,…p n 。若p 2 = 3,則 p 3 可能取值的個數是()

a:n -3

b:n - 2

c:n - 1

d:無法確定

答案:c ( n - 1)個

看了別人的一些解析,覺得不夠完善,下面給出自己的見解。

首先,棧的先進後出原則大家應該是知道的。

根據題意 p 2 = 3,可以知道 p 1 的可能情況有三種:1,2 或 4。(看到有些人只想到了 1,2)

為啥這樣想呢?這裡估計還有乙個關鍵是要考慮到 n 的大小

當 n = 3 時, p 2 = 3 的話,那麼 p 1 有兩種情況 1 和 2 。

此時的話我們就可以看到 p 3 只有兩種可能 1 或者 2 (n - 1)個。

當 n > 3 時: p 2 = 3 的話,那麼 p 1 有三種情況 1 , 2 和 4 。

此時的話我們就可以看到 p 3 的情況有 1,2,4,5,… n (n - 1)個。

綜上所述就是 p 3 可能取值的個數是(n - 1)個。

一道值得小心的SQL題目

一道值得小心的sql題目 現有三個表student 學生表 stuid 學生號,stuname 姓名 subject 課程表 subid 課程號,subname 課程名 score 成績表 scoreid 成績記錄號,subid 課程號,stuid 學生號,score 成績 請用sql實現 姓名 英...

一道單調棧的題目

今天偶然遇到一道單調棧的題目,順便複習下閒置已久的演算法知識,題目的意思大致就是給你乙個區間,找到子段和 k的乙個最小子段。子段問題的關鍵是字首和,先求一下 int sum 50005 for int i 0 i sum i 1 sum i a i 緊接著,關鍵就是維持乙個單調棧,下面解釋一下什麼是...

資料結構 棧的入棧 出棧序列

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