直接模拟
通过模拟题中所分析的过程,得到结果,注意第一个小朋友第一次传出球时就已经算接到了一次球。代码如下:
class Solution {
public int[] circularGameLosers(int n, int k) {
ArrayList<Integer> arrayList = new ArrayList<>();
int[] nums = new int[n];
nums[0] = 1;
int i = 0;
int time = 1;
while (true) {
if (nums[(i + time * k) % n] == 1) break;
else {
nums[(i + time * k) % n]++;
i = (i + time * k) % n;
time++;
}
}
for (i = 0; i < n; i++) {
if (nums[i] == 0) arrayList.add(i + 1);
}
return arrayList.stream().mapToInt(Integer::intValue).toArray();
}
}