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

栈的压入、弹出序列

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>
bool IsPopOrder(int* pushV, int pushVLen, int* popV, int popVLen ) {
    // write code here
    if (pushVLen != popVLen) {
        return false;
    }

    int pushIndex = 0;
    int popIndex = 0;
    int stack[1000];
    int top = -1;

    while (popIndex < popVLen) {
        while (top == -1 || stack[top] != popV[popIndex]) {
            if (pushIndex >= pushVLen) {
                break;
            }
            stack[++top] = pushV[pushIndex++];
        }

        if (stack[top] != popV[popIndex]) {
            break;
        }

        top--;
        popIndex++;

    }


    return (popIndex == popVLen && top == -1);



}

全部评论

相关推荐

点赞 收藏 评论
分享
牛客网
牛客企业服务