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

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

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];
    }

};

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

相关推荐

不愿透露姓名的神秘牛友
03-08 19:53
已编辑
AAA不喝拿铁:海投吧,感觉项目写的可以了,能cover住提问就行。我根据真实面经整理得到的最全(高/中/低频)面试题,适合面试前短期突击&长期提高补充,需要的牛u可以关注一手我的专栏,祝好运
点赞 评论 收藏
分享
评论
11
收藏
分享

创作者周榜

更多
牛客网
牛客企业服务