棧的壓入 彈出序列

2022-06-16 18:21:15 字數 1150 閱讀 9154

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

順序為:push[middle]==pop[0];之後只能從middle--或middle++,一旦從end=size-1開始則只能end--。

1

class

solution 17}

18if(middle==-1) return

false

;19 left=middle-1

;20 right=middle+1;21

int k=1;22

int num=push_size-1;23

while(left>=0&&rightpop_size)

30if(popv[k]==pushv[right])

35if(popv[k]==pushv[num])

44return

false;45

}46return

true;47

}48return

false;49

}50while(left>=0)57

return

false;58

}59while(right65return

false;66

}67return

true;68

}69 };

!較好的方法:

同樣的道理,push壓入後,只能從當前位置pop,不然只能等下乙個數壓入後再pop,或等到末尾再pop。

1

class

solution

18}

19return

s.empty();

20/*

if(pushv.size() == 0) return false;

21vectorstack;

22for(int i = 0,j = 0 ;i < pushv.size();) 28}

29return stack.empty();

*/3031}

32 };

棧的壓入彈出序列

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

棧的壓入 彈出序列

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

棧的壓入彈出序列

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