力扣(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;}
}