题目描述:
把0 ,1 ,……, n-1这n个数排成一个圆圈,从数字0开始,每次从这个圆圈中删除第m个数字。 求这个圆圈剩下的最后一个数字
解析:可用list模仿环形链表来解决
class Solution {
public:
int LastRemaining_Solution(int n, int m)
{
if(n < 1|| m < 1)
return -1;
list<int> l;
for(int i=0;i<n;++i)
l.push_back(i);
auto it = l.begin();
while(l.size() != 1){
for(int i=0;i<m-1;i++)
{
++it;
if(it == l.end())
it = l.begin();
}
auto next = ++it;
--it;
if(next == l.end())
next = l.begin();
l.erase(it);
it = next;
}
return (*it);
}
};