LinkedList模拟约瑟夫环

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

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

比如n=5, m=3

关键在于不要让m=0,1,2,0,1,2,...这样循环:
n: 0,1,2,3,4,5
m: 0,1,2,0,1,2

可以直接跳着来:
n: 0,1,2,3,4,5
m: 0, ,2, ,4,

import java.util.*;
public class Solution {
    public int LastRemaining_Solution(int n, int m) {

        if(n<=0) return -1;

        LinkedList<Integer> container = new LinkedList<>();

        for(int i=0;i<n;++i){
            container.add(i);
        }

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

        return container.get(0);


    }
}
全部评论

相关推荐

蚂蚁 基架java (n+6)*16 签字费若干
点赞 评论 收藏
分享
10-28 14:42
门头沟学院 Java
watermelon1124:因为嵌入式炸了
点赞 评论 收藏
分享
1 收藏 评论
分享
牛客网
牛客企业服务