力扣(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)!