輸入兩個整數序列,第乙個序列表示棧的壓入順序,請判斷第二個序列是否為該棧的彈出順序。假設壓入棧的所有數字均不相等。例如序列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--。
1class
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。
1class
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...