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]