1、如果通过环形列表去模拟圆圈的话,最后时间复杂度为O(mn),而且还需要一个辅助链表来模拟圆圈,空间复杂度为O(n)。
2、通过找出递推公式的方法,求得递推公式为
时间复杂度为O(n),空间复杂度为O(1)。
#include<stdio.h>
int LastRemaining(int n,int m)
{
if(n<1 || m<1)
return 0;
int last=0;
for (int i=2;i<=n;i++)
{
last=(last+m)%i;
}
return last;
}
int main()
{
printf("%d\n",LastRemaining(12,2));
return 0;
}