# -*- coding:utf-8 -*-classSolution:defLastRemaining_Solution(self, n, m):
temp =list(range(0,n))
start =0
result =-1while temp:
result = temp.pop((start + m -1)% n)
start =(start + m -1)% n
n -=1return result
算法说明: 约瑟夫环算法,建立列表temp表示孩子编号,start表示每一轮第一个报数的人; 从第一个报数开始,对孩子个数逐步取余,找到需要出列的孩子序号(start + m - 1) % n,从temp中pop,并存入result; 更新下一轮第一个报数的孩子序号(start + m - 1) % n; 孩子的总个数减少1,返回最后一个孩子编号。 (注:如果start + m - 1小于孩子个数,正常出列操作,如果大于孩子个数,取余操作相当于从头开始循环)