栈的push、pop 序列

来源:互联网 发布:上海峰途网络 编辑:程序博客网 时间:2024/06/05 16:31
题目:输入两个整数序列。其中一个序列表示栈的push 顺序,
判断另一个序列有没有可能是对应的pop 顺序。
为了简单起见,我们假设push 序列的任意两个整数都是不相等的。
比如输入的push 序列是1、2、3、4、5,那么4、5、3、2、1 就有可能是一个pop 系列。
因为可以有如下的push 和pop 序列:
push 1,push 2,push 3,push 4,pop,push 5,pop,pop,pop,pop,
这样得到的pop 序列就是4、5、3、2、1。
但序列4、3、5、1、2 就不可能是push 序列1、2、3、4、5 的pop 序列。

bool fun(int a[], int b[], int n){int i = 0;int j = 0;stack<int> buf;while (i < n && j < n){if (a[i] == b[j]){i++;j++;}else{buf.push(a[i]);i++;}}while (!buf.empty()){int top = buf.top();if (top != b[j]){return false;}else{buf.pop();j++;}}return true;}

0 0
原创粉丝点击