剑指offer——圆圈中最后剩下的数字

一、若是经过环形列表去模拟圆圈的话,最后时间复杂度为O(mn),并且还须要一个辅助链表来模拟圆圈,空间复杂度为O(n)。spa

二、经过找出递推公式的方法,求得递推公式为code


时间复杂度为O(n),空间复杂度为O(1)。blog

 

#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;
}
相关文章
相关标签/搜索