剑指offer 孩子们的游戏
0,1,n-1这n个数字排成一个圆圈,从数字0开始,每次从这个圆圈里删除第m个数字。求这个圆圈里剩下的最后一个数字。
例:
n = 5,m = 3 结果:3
模拟过程:
认为每次删除后,下次从被删除后的下一个开始为第一个数,第一个数下标为0。
次数 |
0 |
1 |
2 |
3 |
4 |
1 |
0 |
1 |
2 |
3 |
4 |
2 |
3 |
4 |
0 |
1 |
|
3 |
1 |
3 |
4 |
|
|
4 |
1 |
3 |
|
|
|
5 |
3 |
|
|
|
|
公式法
关键思路:
倒推,求最后留下来的数字的下标编号。
f(N,M)=(f(N−1,M)+M)%N
最开始共有N个数,每次删掉第M个&#