队列应用-击鼓传花
2022/6/28 6:22:30
本文主要是介绍队列应用-击鼓传花,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!
// 队列的应用 let Queue = require('./01队列的封装') /** * 使用队列实现小游戏:击鼓传花, * 传入一组数据和设定的数字num,循环遍历数组内元素, * 遍历到的元素为指定数字num时将该元素删除,直至数组剩下一个元素。 */ // 队列应用:面试题:击鼓传花 let passGame = (nameList, num) => { //1.创建队列结构 let queue = new Queue() //2.将所有人依次加入队列 // 这是ES6的for循环写法,i相当于nameList[i] for (let i of nameList) { queue.enQueue(i) } // 3.开始数数 while (queue.size() > 1) { //队列中只剩1个人就停止数数 for (let i = 0; i < num - 1; i++) { /** * 思路是这样的,由于队列没有像数组一样的下标值不能直接取到某一元素, * 所以采用,把num前面的num-1个元素先删除后添加到队列末尾, * 这样第num个元素就排到了队列的最前面, * 可以直接使用dequeue方法进行删除 * 如此循环往复即可 * */ queue.enQueue(queue.deQueue()) } // num对应这个人,直接从队列中删除 queue.deQueue() } //4.获取剩下的那个人 let number="还剩下人的个数是:"+queue.size() console.log(number); let endName = queue.frontQueue() console.log('最终剩下的人:' + endName); // 返回这个人对应的下标 let result="该人员对应的下标是:"+nameList.indexOf(endName) return result } module.exports=passGame
测试代码
let passGame=require('./03队列应用-击鼓传花') //5.测试击鼓传花 let names = ['lily', 'lucy', 'Tom', 'Lilei', 'Tony'] console.log(passGame(names,3));
结果
这篇关于队列应用-击鼓传花的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!
- 2024-11-01后台管理开发学习:新手入门指南
- 2024-11-01后台管理系统开发学习:新手入门教程
- 2024-11-01后台开发学习:从入门到实践的简单教程
- 2024-11-01后台综合解决方案学习:从入门到初级实战教程
- 2024-11-01接口模块封装学习入门教程
- 2024-11-01请求动作封装学习:新手入门教程
- 2024-11-01登录鉴权入门:新手必读指南
- 2024-11-01动态面包屑入门:轻松掌握导航设计技巧
- 2024-11-01动态权限入门:新手必读指南
- 2024-11-01动态主题处理入门:新手必读指南