Problem: 2682. 找出转圈游戏输家

[TOC]

思路

使用count作为步数来进行计算,当数组中不存在值为2的数字时,继续循环,因为每次超过N会回到原点所以进行取余,某个数字出现第二次时,跳出循环。

Code

[]
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19

class Solution {
public:
vector<int> circularGameLosers(int n, int k) {
vector<int> num(n,0);
vector<int> ans;
int i=0,count=k;
while(1){
num[i]++;
if(num[i]==2) break;
i=(i+count)%n;
count+=k;
}
for(int i=0;i<n;i++){
if(num[i]==0) ans.push_back(i+1);
}
return ans;
}
};