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

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

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

第七十六题

方法一:模拟出这个圈,然后遍历和删除
class Solution {
public:
    int LastRemaining_Solution(int n, int m) {
        // 数据结构中就说过 好像叫约瑟夫环
        // 方法1,模拟循环下去,每三个人干掉一个
        vector<int> circle;
        for(int i=0;i<n;i++)
            circle.push_back(i);
        int now=0;
        while(n>1){
            // 循环队列
            now=(now+m-1)%n;
            circle.erase(circle.begin()+now);
            n--;
        }
        return circle[0];
    }
};


方法2:上网找原理讲解吧
class Solution {
public:
    int LastRemaining_Solution(int n, int m) {
        // 数据结构中就说过 好像叫约瑟夫环
        // 方法2 正经的约瑟夫环的算法
        return f(n,m);
    }
    
    // 递归调用求解
    int f(int n,int m)
    {
        if(n == 1)
            return 0;
        else
            return (f(n-1,m) + m) % n;
    }
};

题解 文章被收录于专栏

一遍做剑指offer 一边保存做题步骤 并附带详细注释哦

全部评论

相关推荐

头像
昨天 20:19
已编辑
门头沟学院 人工智能
本文略长,献给身处双非、学院本科的低年级依旧陷入迷茫的同学,一个参考。夹杂强烈主观因素,若观点不同,仅当笑料。近日,工作之余的午休时间给母校的学弟学妹进行了宣讲,同时也接受了牛客的访谈,不约而同的触发了两个关键词考研,就业。现象今年和去年,认识的学弟学妹,来自知某、抖某、牛客等系列的学弟学妹,这次宣讲,约有20个学弟学妹来加了我的联系方式,向我取经,聊聊未来,聊聊想法。我这里简单概括一下。1.现在很迷茫,大方向摇摆就业还是考研,但是倾向考研。小方向摇摆竞赛和项目,不知道怎么去做,不知道怎么开始。2.考研的直接目的绝大多数都是为了(混)学历,根本目的就是提高就业竞争力。3.我把他们都拉了个群,在...
牛客85294058...:“私聊能够滔滔不绝,而拉了一个小群之后就完全一声不吭”个人观点这跟从小到大“不要浪费大家时间”的社会环境有关:个人化的提问,如果你上学时有留心、或者参加QA环节多,会注意到这种做法经常是被人骂的。要营造让大家开口的氛围和做出欢迎讨论的议题设置还是比较难的,期待方法探索。
投递大连飞创信息技术有限公司等公司10个岗位
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务