本题属于约瑟夫问题。核心是用取余的方式表示所停的位置
class Solution:
def LastRemaining_Solution(self,n,m):
if n<1 or m<1:
return -1
con =range(n)
f=-1
s=0
while con:
k=(s+m-1)%n
f=con.pop(k)
n-=1
s=k
return f
采用递归方法,由于复杂度高,无法通过
class Solution:
def LastRemaining_Solution(self,n,m):
if n < 1 or m<1:
return -1
if n == 1:
return 0
return (self.LastRemaining_Solution(n-1, m)+m)%n