2018/10/15
??環(huán)境:牛客的編譯環(huán)境
??語言:JavaScript
??難點(diǎn):想不到怎么去做這個(gè)題,思考了一個(gè)小時(shí)后看了討論..
??題目:輸入兩個(gè)整數(shù)序列,第一個(gè)序列表示棧的壓入順序,請(qǐng)判斷第二個(gè)序列是否可能為該棧的彈出順序。假設(shè)壓入棧的所有數(shù)字均不相等。例如序列1,2,3,4,5是某棧的壓入順序,序列4,5,3,2,1是該壓棧序列對(duì)應(yīng)的一個(gè)彈出序列,但4,3,5,1,2就不可能是該壓棧序列的彈出序列。(注意:這兩個(gè)序列的長度是相等的)
??思路:設(shè)置一個(gè)新數(shù)組,按照壓棧的順序,每次壓入一個(gè),就判斷該數(shù)組最后一個(gè)數(shù)和出棧隊(duì)列的當(dāng)前索引指的值是否相同(索引從0開始),如果相同,則彈出,直到不同時(shí),繼續(xù)壓入。
等壓完后,判斷新數(shù)組的長度是否為0,如果元素都彈出去,則說明彈出序列可行。
??代碼:
function IsPopOrder(pushV, popV)
{
// write code here
var tmp = [];
for(var i = 0,j = 0; i < pushV.length;){
tmp.push(pushV[i++]);
while(j < popV.length && tmp[tmp.length - 1] == popV[j]){
tmp.pop();
j++;
}
}
return tmp.length == 0;
}