题目是这样的
- 有不限数量的扑克牌,要用这些扑克牌做一个游戏,规则很简单:首先从牌顶拿出一张牌放到桌上,然后再从牌顶拿出一张牌到牌底,然后再从牌顶拿出一张牌放到桌上,之后再从牌顶拿出一张牌到牌底,不断重复这个过程,直到扑克牌全部放到桌上,现在给出桌上扑克牌的顺序,然后求出原来扑克牌的顺序
- 我这个人对算法不是特别敏感,但是对于一些很有意思的问题也会去思考,研究,下面是我给出的算法:
- 这个问题可以这么来思考,原来的扑克牌是顺序的,可以假设为一个数组,这个数组就是 [0,1,2,3,4,5…],这个数组的索引实际上也反映了原本扑克牌的位置,某种意义上来讲就是位置数组,如果按照上面的游戏规则之后,这个数组肯定是会被打乱的,但是即使这样,每个索引还是会对应着扑克牌,于是第一步可以先找出打乱之后的位置数组,得到位置数组,然后根据位置数组就可以还原原来扑克牌的顺序了
- 代码如下:
// 获取位置数组
function puke(len){