一道值得思考的数据结构题目(入栈与出栈序列)
2017-03-08 19:20
302 查看
就业指导课上做的一道数据结构中有关栈的题目,当时一开始自己思考不全面,错选了。
一个栈的入栈序列为1,2,3,…,n ,其出栈序列是 p 1 ,p 2 ,p 3 ,…p n 。若p 2 = 3,则 p 3 可能取值的个数是()
A:n -3
B:n - 2
C:n - 1
D:无法确定
答案:C ( n - 1)个
看了别人的一些解析,觉得不够完善,下面给出自己的见解。
首先,栈的先进后出原则大家应该是知道的。
根据题意 p 2 = 3,可以知道 p 1 的可能情况有三种:1,2 或 4 。(看到有些人只想到了 1,2)
为啥这样想呢?这里估计还有一个关键是要考虑到 n 的大小。
当 n = 3 时, p 2 = 3 的话,那么 p 1 有两种情况 1 和 2 。
如果 p 1 = 1 , 那么 p 3 = 2 ;
如果 p 1 = 2 ,那么 p 3 = 1 ;
此时的话我们就可以看到 p 3 只有两种可能 1 或者 2 (n - 1)个。
当 n > 3 时: p 2 = 3 的话,那么 p 1 有三种情况 1 , 2 和 4 。
如果 p 1 = 1 , 那么 p 3 = 2,4,5,… n (n - 2)个
如果 p 1 = 2 ,那么 p 3 = 1,4,5,… n (n - 2)个
如果 p 1 = 4 ,那么 p 3 = 2,5,6,… n (n - 3)个
此时的话我们就可以看到 p 3 的情况有 1,2,4,5,… n (n - 1)个。
综上所述就是 p 3 可能取值的个数是 (n - 1)个。
一个栈的入栈序列为1,2,3,…,n ,其出栈序列是 p 1 ,p 2 ,p 3 ,…p n 。若p 2 = 3,则 p 3 可能取值的个数是()
A:n -3
B:n - 2
C:n - 1
D:无法确定
答案:C ( n - 1)个
看了别人的一些解析,觉得不够完善,下面给出自己的见解。
首先,栈的先进后出原则大家应该是知道的。
根据题意 p 2 = 3,可以知道 p 1 的可能情况有三种:1,2 或 4 。(看到有些人只想到了 1,2)
为啥这样想呢?这里估计还有一个关键是要考虑到 n 的大小。
当 n = 3 时, p 2 = 3 的话,那么 p 1 有两种情况 1 和 2 。
如果 p 1 = 1 , 那么 p 3 = 2 ;
如果 p 1 = 2 ,那么 p 3 = 1 ;
此时的话我们就可以看到 p 3 只有两种可能 1 或者 2 (n - 1)个。
当 n > 3 时: p 2 = 3 的话,那么 p 1 有三种情况 1 , 2 和 4 。
如果 p 1 = 1 , 那么 p 3 = 2,4,5,… n (n - 2)个
如果 p 1 = 2 ,那么 p 3 = 1,4,5,… n (n - 2)个
如果 p 1 = 4 ,那么 p 3 = 2,5,6,… n (n - 3)个
此时的话我们就可以看到 p 3 的情况有 1,2,4,5,… n (n - 1)个。
综上所述就是 p 3 可能取值的个数是 (n - 1)个。
相关文章推荐
- [置顶] 【数据结构】 出栈序列的合法性【面试】
- 一道关于javascript数据类型题目的思考
- ssd上一道题目引发的思考
- 【数据结构】 出栈序列的合法性【面试】
- POJ1018 DP 一道自己独立思考出的DP题目 兼 12月份算法学习小结[更新]
- 数据结构与算法——出栈序列统计
- 一道JS面试题目引发的思考
- 一道关于时间复杂度的数据结构题目
- 一道简单的题目引发的思考
- 关于中南大学数据结构/C++课设题目的一点思考(一·简单题)
- 一道简单的题目引发的思考
- nbut 1218 You are my brother 一道值的思考的题目
- 一道值得小心的SQL题目
- 黑马程序员——对一道论坛题目的思考
- 网上的一道题目整理 《加上了我的注释》很值得看看
- C++ 一道简单的题目引发的思考
- amazon 出栈 进栈 序列 题目
- 一道原生js题目引发的思考(鼠标停留区块计时)
- 分享一道微软的数据结构面试题目