剑指offer 046、孩子们的游戏(圆圈中最后剩下的数)
题目
题解
来自力扣大佬@Sweetiee的小号 的解法
第二张图可能不容易理解,再看一个非常清晰的解析
class Solution {
public:
int LastRemaining_Solution(int n, int m) {
if(n <= 0 || m < 0) return -1;
int result = 0;
// 最后一轮剩下2人,从2开始反推
for (int i = 2; i <= n; ++i) {
result = (result + m) % i;
}
return result;
}
};