🏆个人主页:企鹅不叫的博客
🌈专栏
⭐️ 博主码云gitee链接:代码仓库地址
⚡若有帮助可以【关注+点赞+收藏】,大家一起进步!
💎一、题目
🏆1.题目描述
🏆2.原题链接
💎二、解题报告
🏆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 && Stack[top] == popped[index]){
top--;
index++;
}
}
return top == -1;
}
1.日常判断空
2.创建一个栈
3.遍历pushdSize,每插入一个元素到Stack中,就要判断是否和popped相等,相等就继续匹配popped,否则就继续插入元素,如果遍历pushed插入完后,Stack中还有元素说明没有全部匹配,返回false,否则返回true