题目
解题
解题一:数学+递归
// javascript
var lastRemaining = function(n, m) {
if (n === 1) return 0;
const x = lastRemaining(n - 1, m);
return (m + x) % n;
};
解题二:数学+迭代
参考:剑指 Offer 62. 圆圈中最后剩下的数字(数学 / 动态规划,清晰图解)
// javascript
var lastRemaining = function(n, m) {
let x = 0;
for (let i = 2; i <= n; ++i) {
x = (x + m) % i; // 除 i
}
return x;
};