《剑指offer-P28》【剑指Offer 31.栈的压入、弹出序列】
时间:2023-12-20 11:07:02
??个人主页:博客不叫企鹅
??专栏
- C语言初阶和进阶
- C项目
- Leetcode刷题
- 初始数据结构和算法
- C 初阶和进阶
- 计算机操作系统的深入理解
- 《高质量C/C 编程》
?? 博主码云gitee链接:代码仓库地址
?若有帮助【关注 点赞 收藏】,大家一起进步!
文章目录
- ??一、题目
-
- ??1.题目描述
- ??2.原题链接
- ??二、解题报告
-
- ??1.思路分析
- ??2.代码详解
??一、题目
??1.题目描述
??2.原题链接
剑指Offer 31.堆栈的压入和弹出序列
??二、解题报告
??1.思路分析
??思路:
使用辅助栈模拟栈进入栈的过程,同时匹配popped是否符合
??2.代码详解
bool validateStackSequences(int* pushed, int pushedSize, int* popped, int poppedSize){
if(pushed == NULL || popped == NULL || pushedSize != poppedSize) //1 {
return false; } int *Stack = (int*)malloc(sizeof(int)*pushedSize); //2 int top = -1, index = 0; for(int i = 0; i < pushedSize; i){
//3 Stack[ top] = pushed[i]; while(top>-1/span> && Stack[top] == popped[index]){
top--; index++; } } return top == -1; }
1.日常判断空
2.创建一个栈
3.遍历pushdSize,每插入一个元素到Stack中,就要判断是否和popped相等,相等就继续匹配popped,否则就继续插入元素,如果遍历pushed插入完后,Stack中还有元素说明没有全部匹配,返回false,否则返回true