题目链接
题目描述
思路
数组(长度为n+1)记录传到球的次数,当出现次数为2的,结束循环
通过对n取余模拟顺时针转动,当结果为0时设为n
代码
class Solution {
public:
vector<int> circularGameLosers(int n, int k) {
int num[n+1];
memset(num,0,sizeof(num));
int now=1;
int i=1;
num[1]=1;
while(1){
now=(now+i*k)%n;
if(!now)now=n;
++i;
++num[now];
if(num[now]==2)break;
}
vector<int> answer;
for(int i=1;i<=n;i++){
if(!num[i])answer.push_back(i);
}
return answer;
}
};
结果
优化
没看题解不知道怎么优化