面试62题:
题目:圆圈中最后剩下的数字
题:0,1,...,n-1这n个数字排成一个圆圈,从数字0开始,每次从这个圆圈里删除第m个数字。求出这个圆圈里剩下的最后一个数字。
解题思路:约瑟夫环问题,可以根据数学规律找出高效的解法,具体如下,详见剑指offer。
解题代码:
# -*- coding:utf-8 -*- class Solution: def LastRemaining_Solution(self, n, m): # write code here if n<1 or m<1: return -1 res=0 for i in range(2,n+1): res=(res+m)%i return res