1.循环删除m-1个数,删除一个,则把该数后面的数放到数组前部。直到剩下一个数。
其中当n > m时,需要把n-m直到n<m才可以继续删除。

# -*- coding:utf-8 -*-
class Solution:
    def LastRemaining_Solution(self, n, m):
        # write code here
        if n < 1:
            return -1
        # 新建数组存放0 - m-1个数
        nums_list = [i for i in range(n)]
        while len(nums_list) > 1:
            # 重置并初始化 m_tmp
            m_tmp = m
            # 找到当前m比当前n长了 m_tmp
            while m_tmp > len(nums_list):
                m_tmp -= len(nums_list)
            # 删除m_tmp对应的数
            nums_list.pop(m_tmp-1)
            # 将m_tmp后面的数放到数组前部
            nums_list = nums_list[m_tmp-1:] + nums_list[:m_tmp-1]
        return nums_list[0]