这个击鼓传花基于普通的队列级基础上变为循环队列,没有使用双端队列,普通的队列可以见我之前发布的文章。击鼓传花代码如下:
function hotPotato(elementsList,num){ const queue = new Queue();//这个队列类,可以参考https://www.cnblogs.com/MySweetheart/p/13211539.html const elimitatedList = []; for(let i = 0; i < elementsList.length;i++){ queue.enqueue(elementsList[i]); } while(queue.size()>1){ for(let i = 0; i < num; i++){ queue.enqueue(queue.dequeue()); } elimitatedList.push(queue.dequeue()); } return { eliminated:elimitatedList, winner:queue.dequeue() } }
结果