class Solution {
public:
int lastRemaining(int n, int m) {
// 解法一:双向链表 超时
// list<int> helper;
// for(int i=0;i<n;i++)
// helper.emplace_back(i);
// list<int>::iterator cur=helper.begin();
// while(helper.size()>1){
// for(int i=1;i<m;i++){
// ++cur;
// if(cur==helper.end())
// cur=helper.begin();
// }
// list<int>::iterator next=++cur;
// if(next==helper.end())
// next=helper.begin();
// --cur;
// helper.erase(cur);
// cur=next;
// }
// return *cur;
// 解法二
int last=0;
for(int i=2;i<=n;i++){
last=(last+m)%i;
}
return last;
}
};