题目:
0, 1, …, n-1这n个数字(n>0)排成一个圆圈,从数字0开始每次从这个圆圈里删除第m个数字。求出这个圆圈里剩下的最后一个数字。
样例
输入:n=5 , m=3
输出:3
解答:
class Solution(object):
def lastRemaining(self, n, m):
"""
:type n: int
:type m: int
:rtype: int
"""
if n <= 0 or m <= 0:
return -1
remain = n
l = [i for i in range(n)]
cur = 0
count = 0
while(remain > 1):
toDelete = (cur + m - 1)%len(l)
del l[toDelete]
remain -= 1
cur = toDelete
cur = cur if cur < len(l) else 0
return l[-1]