算法思想
n个数字中,删除第m个,每次删完都要重新编号
旧:m,m + 1, m + 2…
新:0,1,2…
所以旧 = (新 + m) % n,递归处理就可以了
java代码
class Solution {
public int lastRemaining(int n, int m) { //n个数字中,删除第m个,每次删完都要重新编号
if(n == 1) return 0;
return (lastRemaining(n - 1, m) + m) % n; //旧 = (新 + m) % n
}
}