给定入栈顺序求所有出栈可能性
来源:互联网 发布:苹果软件定制 编辑:程序博客网 时间:2024/06/05 14:21
以前很少接触算法,没有遇到过这种问题,但是,在做美团、CVTE的前端笔试题时,都遇到过这种智力题:
根据规律求括号中的数:
1,1,2,5,14,()
我怎么知道这个规律会是:
-_-||(看来我基础确实不好)
所以连续懵逼两次,后来再做另外一道题的时候才了解到这个数列 ”卡塔兰数”。。。
题目是这样的:已知入栈顺序是1,2,3,4,5,6,7 ,求出栈可以有多少种,答案就是上式C7=429。
但是如果还要求所有的出栈具体顺序呢?
思路:每个时刻,当前栈都有两种选择,继续入栈,或者出栈。因此,用递归就可以实现了。
JavaScript代码:
function main(data){ data = data.reverse(); var n = data.length; var res = []; process(data,[],[],n); return res; function process(data, stack, result, n){ if(result.length>=n){ //console.log(result); res.push(result); return; } //入栈 if(data.length>0){ var d = data[data.length-1]; var stackNew1 = stack.concat(d); var dataNew1 = data.slice(0,-1); var resNew1 = result.slice(0); //console.log("入栈",dataNew.join(),"|",stackNew.join(),"|",resNew.join()); process(dataNew1,stackNew1,resNew1, n); } //或者出栈 if(stack.length>0){ var p = stack[stack.length-1]; var stackNew2 = stack.slice(0,-1); var dataNew2 = data.slice(0); var resNew2 = result.concat(p); //console.log("出栈",dataNew1.join(),"|",stackNew1.join(),"|",resNew1.join()); process(dataNew2,stackNew2,resNew2, n); } }}
当data=[1,2,3,4,5,6,7] ,看看有多少种可能:
var data = [1,2,3,4,5,6,7];console.log(main(data).length);//429。。。。。。。。。。。。。
当data=[1,2,3,4] ,看看是哪些组合:
var data = [1,2,3,4];console.log(main(data));
输出:
[ [ 4, 3, 2, 1 ],
[ 3, 4, 2, 1 ],
[ 3, 2, 4, 1 ],
[ 3, 2, 1, 4 ],
[ 2, 4, 3, 1 ],
[ 2, 3, 4, 1 ],
[ 2, 3, 1, 4 ],
[ 2, 1, 4, 3 ],
[ 2, 1, 3, 4 ],
[ 1, 4, 3, 2 ],
[ 1, 3, 4, 2 ],
[ 1, 3, 2, 4 ],
[ 1, 2, 4, 3 ],
[ 1, 2, 3, 4 ] ]
0 0
- 给定入栈顺序求所有出栈可能性
- 给定入栈顺序,求所有可能的出栈顺序
- 给定一个入栈顺序,输出所有的出栈顺序
- 给定入栈顺序,输出所有可能出栈情况及所有情况的总数
- 给定一个入栈序列,求所有可能的出栈序列
- 给定一个入栈序列,求所有可能的出栈序列
- 给定一个入栈序列,求所有可能的出栈序列
- 给定入栈顺序,求解出栈顺序
- 给定入栈顺序,判断出栈顺序是否合法
- 给定入栈顺序,判断出栈顺序是否合法
- n个元素入栈顺序一定时,出栈顺序的可能性数量
- 给定一个入栈顺序和一个出栈顺序,判断出栈顺序是否可能
- 经典:求指定入栈顺序序列对应的所有可能出栈序列
- n元素顺序入栈,出栈的可能性有多少种
- 给定入栈顺序,输出所有可能的出栈情况,并判断给定的序列是否为正确的输出序列
- 给定入栈序列1到n,输出所有可能的出栈序列
- 给定入栈序列判断给定出栈序列是否合法
- 出栈的可能性
- linux下 可用的libevent 实例
- 网页上能否加一个旺旺的连接? 就和qq那样的。
- Kafka使用调研
- 安卓开发——Intent能传递的数据类型
- C++ 快速排序算法的实现与改进(含笔试面试题)
- 给定入栈顺序求所有出栈可能性
- 睿城_技术01----StampGIS IE10/11、win8.1/10访问三维球解决
- listview adapter 控件注册点击事件,点击一个item后有其他item的这个控件响应了事件
- spark性能优化(一)
- 深入学习ConcurrentHashMap
- 0325-表单标签-笔记
- php开源项目大全
- 百度地图能否获取第三方GPS数据
- 《Java高并发程序设计》学习 --5.10 网络NIO