剑指offer——圆圈中最后剩下的数字
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; }