剑指 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

浙公网安备 33010602011771号