题解 | #栈的压入、弹出序列#

栈的压入、弹出序列

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
}

全部评论

相关推荐

这个简历还有救吗,考研失利了,完蛋蛋了
helloWord大...:每次看见你们9爷隔着嚷嚷找不到工作,我真的分不清是串还是装
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务