找出游戏的获胜者
难度:中等
模拟过程,先将所有人入队,每次将k-1的人出队再入队,再把队首元素出队,重复此过程,最后当队列元素个数只剩1个时结束循环,并返回此时队列中的唯一元素。
代码如下:
public int findTheWinner(int n, int k) {Deque<Integer> deque = new ArrayDeque();for (int i = 1; i <= n; i++) {deque.offer(i);}while(deque.size()>1){for (int i = 0; i < k; i++) {deque.offer(deque.poll());}deque.poll();}return deque.poll();}
执行结果:成功