劍指Offer(Python多種思路實現):圓圈中最後剩下的數字
面試62題:
題目:圓圈中最後剩下的數字
題:0,1,...,n-1這n個數字排成一個圓圈,從數字0開始,每次從這個圓圈裏刪除第m個數字。求出這個圓圈裏剩下的最後一個數字。
解題思路一:約瑟夫環問題。
class Solution:
def LastRemaining_Solution(self, n, m):
# write code here
if n<1 or m<1:
return -1
res=0
for i in range(2,n+1):
res=(res+m)%i
return res
解題思路二:
def LastRemaining_Solution(self, n, m):
if n<=0 or m<=0:
return -1
last_num = 0
for i in range(2, n+1):
last_num = (last_num+m) % i
return last_num