剑指offer 面试62题

面试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

 

posted @ 2018-06-08 17:08  Fintech带你飞  阅读(877)  评论(0编辑  收藏  举报