链接:https://leetcode.cn/problems/validate-stack-sequences/solution/-by-xun-ge-v-w8ir/
来源:力扣(LeetCode)
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。
题目![](https://i-blog.csdnimg.cn/blog_migrate/4c95ad4391bd483ca3c315eb08c05676.png)
示例![](https://i-blog.csdnimg.cn/blog_migrate/9a29c2c474fb87fa0fd151e66eef23ea.png)
思路
解题思路
题目说了这么多,都有点不知道什么意思了,其实就是给你一个数组pushed,其中元素更不相同,判断popped是不是pushed的有效出栈顺序, 就是给你一个数组,求可能的出栈顺序
【栈模拟】
既然题目的说了是出栈顺序,那么直接降pushed入栈,然后根据栈顶元素与popped首地址元素进行比较,相等就将栈顶元素出栈,同时popped首地址 +1
最后判断栈中是否还有元素或者popped首地址是否在末尾
代码
bool validateStackSequences(int* pushed, int pushedSize, int* popped, int poppedSize){
int stack[pushedSize];
int top = -1;
for(int i = 0, j = 0; i < pushedSize; i++)//入栈
{
stack[++top] = pushed[i];
while(top > -1 && stack[top] == popped[j])//相同时出栈
{
top--;
j++;
}
}
return top == -1 ? true : false;//判断栈中是否还有元素
}
作者:xun-ge-v
链接:https://leetcode.cn/problems/validate-stack-sequences/solution/-by-xun-ge-v-w8ir/
来源:力扣(LeetCode)
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。