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

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

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

相关推荐

哥_留个offer先:跟他说,你这个最好用c#,微软就用c#Java不适合这个项目
点赞 评论 收藏
分享
爱吃肉的伊登在写日记:好棒,27届简历能做成这个样子,但是第一个项目感觉cover住难度还是不小的,特别是二面的时候肯定要对分布式系统设计这一块儿有高出正常面试者的水平才行
点赞 评论 收藏
分享
评论
11
收藏
分享

创作者周榜

更多
牛客网
牛客企业服务