Leetcode 2682. 找出转圈游戏输家

Leetcode 2682. 找出转圈游戏输家

Leetcode 2682. 找出转圈游戏输家_第1张图片
Leetcode 2682. 找出转圈游戏输家_第2张图片

数字下标是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;
    }
};

你可能感兴趣的:(Leetcode,leetcode,游戏,算法,模拟,C++)