自学内容网 自学内容网

力扣(leetcode)每日一题 LCR 187 破冰游戏(还是考的约瑟夫环)

题干

社团共有 num 位成员参与破冰游戏,编号为 0 ~ num-1。成员们按照编号顺序围绕圆桌而坐。社长抽取一个数字 target,从 0 号成员起开始计数,排在第 target 位的成员离开圆桌,且成员离开后从下一个成员开始计数。请返回游戏结束时最后一位成员的编号。

示例 1:

输入: num = 7, target = 4
输出: 1

示例 2:

输入: num = 12, target = 5
输出: 0

题解
class Solution {
    public static int iceBreakingGame(int num, int target) {
        List<Integer> list = new ArrayList<>();
        for (int i = 0; i < num; i++) {
            list.add(i);
        }
        int index = 0;
        while (list.size() > 1) {
            index = (index + target - 1) % (list.size());
            list.remove(index);
        }
        return list.get(0);
    }

}

这里的递归,又是不一样的。。。

class Solution {
    public static int iceBreakingGame(int num, int target) {
        return f(num, target);
    }

    public static int f(int num, int target) {
        if (num == 1) {
            return 0;
        }
        return (f(num - 1, target) + target) % num;
    }
}

原文地址:https://blog.csdn.net/ganjiee0007/article/details/142408256

免责声明:本站文章内容转载自网络资源,如本站内容侵犯了原著者的合法权益,可联系本站删除。更多内容请关注自学内容网(zxcms.com)!