思路
先明确f(n,m)表示n个元素的圆圈中最后剩下的元素所在的索引位置
首先是要能想到递归的做法,f(n-1,m)和f(n,m)之间存在关系。
我们从f(1,m)可以一路递推到f(n,m),f(2,m)=(f(1,m)+m)%2,这就由最后一轮答案所在位置(0)推导到答案在倒数第二轮中所在位置了,然后依次推导到f(n,m),逆推得到答案。
```
class Solution {
public:
int lastRemaining(int n, int m) {
if(n==1)return 0;
return (lastRemaining(n-1,m)+m)%n;
}
};