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

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

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

参考别人的代码
方法一:链表模拟

import java.util.LinkedList;
import java.util.List;

public class Solution {
    public int LastRemaining_Solution(int n, int m) {
        if (n<=0 || m<=0) return -1;

        List<Integer> list=new LinkedList<>();
        for (int i=0;i<n;i++) list.add(i);

        int p=0;
        while (list.size()>1){
            p=(p+m-1)%list.size();
            list.remove(p);
        }

        return list.get(0);
    }
}

方法二:数学公式
f(N,M) = ( f(N−1,M) + M ) % N

public class Solution {
    public int LastRemaining_Solution(int n, int m) {
        if (n<=0 || m<=0) return -1;
        if (n==1) return 0;

        return (LastRemaining_Solution(n-1,m)+m)%n;
    }
}

public class Solution {
    public int LastRemaining_Solution(int n, int m) {

        if (n<=0 || m<=0) return -1;

        int p=0;
        for (int i=2;i<=n;i++){
            p=(p+m)%i;
        }

        return p;

    }
}
全部评论

相关推荐

皮格吉:不,有的厂子面试无手撕,可以试试。都是一边学一边面。哪有真正准备好的时候,别放弃
无实习如何秋招上岸
点赞 评论 收藏
分享
野猪不是猪🐗:阿里系官网投递就是这个样子。它不会向tx那样意向组不捞自动共享到全局池子。阿里系你投那个组就只有哪个组能看到。而大部分组是不招人了,所以你什么简历投过去都是挂
投递阿里巴巴集团等公司10个岗位
点赞 评论 收藏
分享
评论
3
收藏
分享

创作者周榜

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