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]
京公网安备 11010502036488号