AB2 栈的压入、弹出序列
描述
输入两个整数序列,第一个序列表示栈的压入顺序,请判断第二个序列是否可能为该栈的弹出顺序。假设压入栈的所有数字均不相等。例如序列1,2,3,4,5是某栈的压入顺序,序列4,5,3,2,1是该压栈序列对应的一个弹出序列,但4,3,5,1,2就不可能是该压栈序列的弹出序列。
-
0<=pushV.length == popV.length <=1000
-
-1000<=pushV[i]<=1000
-
pushV 的所有数字均不相同
示例1
输入:
[1,2,3,4,5],[4,5,3,2,1]
返回值:
true
说明:
可以通过push(1)=>push(2)=>push(3)=>push(4)=>pop()=>push(5)=>pop()=>pop()=>pop()=>pop()这样的顺序得到[4,5,3,2,1]这个序列,返回true
示例2
输入:
[1,2,3,4,5],[4,3,5,1,2]
返回值:
false
说明:
由于是[1,2,3,4,5]的压入顺序,[4,3,5,1,2]的弹出顺序,要求4,3,5必须在1,2前压入,且1,2不能弹出,但是这样压入的顺序,1又不能在2之前弹出,所以无法形成的,返回false
代码:
/** * 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可 * * * @param pushV int整型一维数组 * @param pushVLen int pushV数组长度 * @param popV int整型一维数组 * @param popVLen int popV数组长度 * @return bool布尔型 */ // 判断栈是否为空 #include <stdbool.h> #include <stdio.h> bool isEmpty(int top) { if (top == 0) { return true; } else { return false; } } // 取栈顶元素,且不再使用 int GetTop(int* SqStack, int top) { return SqStack[top - 1]; } // 入栈 void Push(int* SqStack, int* top, int e) { SqStack[(*top)++] = e; } // 出栈 void Pop(int* SqStack, int* top) { (*top)--; } bool IsPopOrder(int* pushV, int pushVLen, int* popV, int popVLen ) { // write code here // 定义一个顺序栈 int SqStack[pushVLen]; int top = 0; int i = 0; // 遍历入栈数组 int j = 0; // 遍历出栈数组 for (i = 0; i < pushVLen; i++) { // 入栈 Push(SqStack, &top, pushV[i]); // 判断栈顶元素是否和出栈数组当前元素相等,如果相等,则出栈直至栈顶元素与出栈数组当前元素不相等,然后继续外层for循环,即下一个入栈数组的元素入栈 // 当栈不是空的时候,检查栈顶元素与出栈数组当前元素是否相等。前提是栈不是空。 // 牛客的检查比VS2022更严格,如果栈为空却取栈顶元素,牛客会报错而VS2022不会 while (top >= 1 && GetTop(SqStack, top) == popV[j]) { // 出栈 Pop(SqStack, &top); // 指向下一个出栈数组的元素 ++j; } } // for循环结束后,如果栈中元素不为空,说明不能按照这个顺序出栈,打印false,否则打印true if (isEmpty(top)) { return true; } else { return false; } }
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 如何编写易于单元测试的代码
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 10年+ .NET Coder 心语 ── 封装的思维:从隐藏、稳定开始理解其本质意义
· 地球OL攻略 —— 某应届生求职总结
· 周边上新:园子的第一款马克杯温暖上架
· Open-Sora 2.0 重磅开源!
· 提示词工程——AI应用必不可少的技术