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

0,1,。。。,n-1这 n 个数字排成一个圆圈,从数字0开始,每次从这个圆圈里删除第 m 个数字,求出这个圆圈里剩下的最后一个数字

思路一:用环形链表模拟圆圈,也可以直接用列表模拟

class Solution(object):
    def lastRemaining(self, n, m):
        """
        :type n: int
        :type m: int
        :rtype: int
        """
        lis = [i for i in range(0,n)]
        index = 0
        for j in range(n-1):
            index = index +m-1
            while index >=len(lis):
                index = index -len(lis)
            del lis[index]
        return lis[0]

思路二:分析每次被删除的数字的规律

你可能感兴趣的:(剑指offer62.圆圈中最后剩下的数字)