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

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

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

import java.util.*;

public class Solution {
    public int LastRemaining_Solution(int n, int m) {
        // 0 1 2 3 4
        // 0 1 3 4
        // 1 3 4
        // 1 3
        // 3
        if(m == 0 || n == 0){
            return -1;
        }
        ArrayList<Integer> list = new ArrayList<>();
        for(int i = 0; i < n; ++i){
            list.add(i);
        }

        fun(list, 0, m);
        return list.get(0);
    }

    public static void fun(ArrayList<Integer> list, int start, int m){
        if(list.size() == 1){
            return;
        }
        int pos = (start + m - 1) % list.size();
        int nextPos = 0;
        if(pos == list.size() - 1){
            nextPos = 0;
        }else{
            nextPos = pos;
        }
        list.remove(list.get(pos));
        fun(list, nextPos, m);
    }
}
全部评论

相关推荐

评论
点赞
收藏
分享
牛客网
牛客企业服务