题解 | #栈的压入、弹出序列#
栈的压入、弹出序列
https://www.nowcoder.com/practice/d77d11405cc7470d82554cb392585106
循环插入
遇到当前临时数组 与 弹出指示位置 相同 则弹出(需要限制数组下越界)
/**
* 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可
*
*
* @param pushV int整型一维数组
* @param pushVLen int pushV数组长度
* @param popV int整型一维数组
* @param popVLen int popV数组长度
* @return bool布尔型
*/
#include <stdbool.h>
#include <stdlib.h>
bool IsPopOrder(int* pushV, int pushVLen, int* popV, int popVLen ) {
int pushVtop = 0;
int popVtop = 0;
int* tempStack = ((int*)malloc(pushVLen * sizeof(int)));
int tempTop = 0;
for (pushVtop = 0; pushVtop < pushVLen; pushVtop++) {
// 循环塞入临时数组
tempStack[tempTop] = pushV[pushVtop];
tempTop++;
// 判断当前塞入的是否为符合的
// 符合弹出一个 并且有可能需要继续弹出
while (popV[popVtop] == tempStack[tempTop - 1] && tempTop != 0) {
// 符合继续弹出条件
popVtop++;
tempTop--;
}
}
return tempTop == 0 ? true : false;
// write code here
}
