数字下标是1-n
,求余的时候n
那里会是0
,之前没有判断是否为0
时,遇到测试样例n=2,k=1
时报错,这个点要记得。
class Solution {
public:
vector<int> circularGameLosers(int n, int k) {
vector<int> ans;
unordered_map<int,int> mp;
int now=1,i=1,add=0;
while(i)
{
if (!mp[now]) mp[now]=1;
else break;
add=i*k;
now=((now+add)%n ==0 ) ? n:(now+add)%n;
i++;
}
for(int j=1;j<=n;j++)
{
if (!mp[j]) ans.push_back(j);
}
return ans;
}
};