JS代码实现击鼓传花【队列】

击鼓传花游戏规则: 所有人围成一圈,开始数数,数到某个数字的人自动淘汰。最后剩下的这个人获得胜利,求最后剩下的人是谁?

例如
在这里插入图片描述

解释说明:将这6个学生放入队列中,每个人报一个数的同时出队,并重新进入队列尾部。数到5的学生,出队后不再重新加入队列。
依次循环,直到队列中只有一个人,即为最后的胜利者。

过程
在这里插入图片描述
结果:剩下1这个人

代码实现:

function passGame(nameList, num) {
    //1、创建一个队列结构
    var queue = [];
    //2、把学生加入队列
    for (var i = 0; i < nameList.length; i++) {
        queue.push(nameList[i]);
    }
    //3、开始数数
    while (queue.length > 1) {
        //不是这个数,加入队尾
        for (var i = 1; i < num; i++) {
            let n = queue.shift();
            queue.push(n);
        }
        //是这个数,直接删除
        queue.shift();
    }
    //4、获取最后剩下的那个人
    console.log(queue[0]);
}
var winner = passGame([1, 2, 3, 4, 5, 6], 5); // 结果:1
  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值