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

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

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

相关推荐

牛客501015981号:前面志愿结束了,在大池子里面被其他部门捞了
点赞 评论 收藏
分享
评论
11
收藏
分享

创作者周榜

更多
牛客网
牛客企业服务