不在状态哎
class Solution {
public:
int LastRemaining_Solution(int n, int m) {
if (n == 1) {
return 0;
}
int x = LastRemaining_Solution(n - 1, m);
// 上一级删除的元素1`
return (m + x) % n;
}
};
迭代
class Solution {
public:
int LastRemaining_Solution(int n, int m) {
if (n == 0 || m == 0) {
return -1;
}
// 出圈后会重新编号
int res = 0;
// i个朋友
for (int i = 2; i <= n; ++i) {
// 从后往前退,已知只有一个时为0
// 使用数学表达式推出新旧编码之间的关系
// m m+1 m+2 (m-1)出列
// 0 1 2
// 这里求旧编号,目前是新编号
// 模上上一轮人数,防止溢出
res = (res + m) % i;
}
return res;
}
};