在0-n-1这n个数中,每次从这个圈中删除第m个数字;
经典解法:链表;将模拟出环形链表结构后进行后进行相关的删除工作;直到只剩一个;也就是常规暴力解法;
创新解法:数学推导;
n>1时 f(n.m)=[f(n-1),m+m ] %n
n=1时候 f(n.m)==0;
int f1(int n,int m){ if( n<1||m<1) return -1; int last=0; for(int i=2;i<=n;i++){ last=(last+m)%i; } return last; }
原文:https://www.cnblogs.com/niliuxiaocheng/p/12593417.html