剑指 Offer 62. 圆圈中最后剩下的数字

题目:0,1,···,n-1这n个数字排成一个圆圈,从数字0开始,每次从这个圆圈里删除第m个数字(删除后从下一个数字开始计数)。求出这个圆圈里剩下的最后一个数字。  简单 

方法:动态规划  时间复杂度O(n)  空间复杂度O(1) 

约瑟夫环问题,动态规划

f(n) = ( f(n-1) + m ) % n

只关注最后剩的那个人的位置变化

 

 

def lastRemaining(n, m):
        """
        :type n: int
        :type m: int
        :rtype: int
        """
        x = 0
        for i in range(2,n+1):
            x = (x + m)%i
        return x

 

posted @ 2022-08-01 22:05  Liang-ml  阅读(19)  评论(0)    收藏  举报