孩子们的游戏(圆圈中最后剩下的数)

孩子们的游戏(圆圈中最后剩下的数)

http://www.nowcoder.com/questionTerminal/f78a359491e64a50bce2d89cff857eb6

一开始想到的使用一个链表实现这个功能,当计数到时直接删除那个节点,如此循环,最后一个节点就是幸运星。
但是这次我重新思考,觉得使用链表还是太过于复杂,因此我这次使用了一个vector来时,当符合计数条件时,直接移除这个数据,最后vector大小为1的时候,就是找到了幸运星。

class Solution {
public:
    int LastRemaining_Solution(int n, int m)
    {
        if(n<=0)
            return -1;
        if(n==1)
            return n;
        vector<int> children(n);
        for(int i = 0;i<children.size();i++)
            children[i] = i;
        int temp = 0;
        while(children.size()>1)
        {
            int count = temp+m-1;
            int size = children.size();
            int num = count%size;
            temp = num;
            children.erase(children.begin()+num);
        }
        return children[0];
    }

};

全部评论
这个地方怎么理解?int count = temp+m-1;
点赞 回复 分享
发布于 2020-03-25 15:35
while循环体可以精简
点赞 回复 分享
发布于 2020-07-01 17:32

相关推荐

尊尼获获:闺蜜在哪?
点赞 评论 收藏
分享
不愿透露姓名的神秘牛友
今天 10:46
点赞 评论 收藏
分享
11 收藏 评论
分享
牛客网
牛客企业服务