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