面试题:圆圈中最后剩下的数字题目:0,1,…n-

19 查阅
面试题:圆圈中最后剩下的数字题目:0,1,…n-1这n个数字排成一个圆圈,从数字0开始每次从这个圆圈里删除第m个数字。求出这个圆圈里面剩下的最后一个数字。

参考答案:

正确答案:

例如,0、1、2、3、4这5个数字组成一个圆圈(如图6.2所示),从数字0开始每次删除第3个数字,则删除的前四个数字依次是2、0、4、1,因此最后剩下的数字是3。
本题就是有名的约瑟夫( Josephuse)环问题。我们介绍两种方法:一种方法是用环形链表模拟圆圈的经典解法,第二种方法是分析每次被删除的数字的规律并直接计算出圆圈中最后剩下的数字。
◆经典的解法,用环形链表模拟圆圈
既然题目中有一个数字圆圈,很自然的想法就是用一个数据结构来模拟这个圆圈。在常用的数据结