题目描述
方法:
1. 动态删除点
class Solution:
def lastRemaining(self, n: int, m: int) -> int:
i = -1
nums = list(range(n))
while len(nums)>1:
i = (i + m) % n
nums.pop(i)
n = n-1
i = i-1
return nums[-1]
缺点:
时间复杂度过高
2. 约瑟夫环问题
f(n) = (f(n-1) + m) % n, f(1) = 0
class Solution:
def lastRemaining(self, n: int, m: int) -> int:
res = 0
for i in range(2,n+1):
res = (res+m)%i
return res