0,1,,n-1這n個數字排成乙個圓圈,從數字0開始,每次從這個圓圈裡刪除第m個數字。求出這個圓圈裡剩下的最後乙個數字。
例如,0、1、2、3、4這5個數字組成乙個圓圈,從數字0開始每次刪除第3個數字,則刪除的前4個數字依次是2、0、4、1,因此最後剩下的數字是3。
示例 1:
輸入: n = 5, m = 3
輸出: 3
示例 2:
輸入: n = 10, m = 17
輸出: 2
限制:1 <= n <= 10^5
1 <= m <= 10^6
josephus problem
classsolution:
def lastremaining(self, n: int, m: int) ->int:
defjosephus(n, k):
if (n == 1):
return 1
else
:
return (josephus(n - 1, k) + k-1) % n + 1
return josephus(n,m)-1
classsolution:
def lastremaining(self, n: int, m: int) ->int:
if n==1:return
0 res=0
for i in range(1,n):
res=(res+m)%(i+1)
return res
classsolution:
def lastremaining(self, n: int, m: int) ->int:
res=0
for i in range(2,n+1):
res=(res+m)%i
return res
劍指 Offer 62 圓圈中最後剩下的數字
題目 題目描述 0,1,n 1這n個數字排成乙個圓圈,從數字0開始,每次從這個圓圈裡刪除第m個數字。求出這個圓圈裡剩下的最後乙個數字。例如,0 1 2 3 4這5個數字組成乙個圓圈,從數字0開始每次刪除第3個數字,則刪除的前4個數字依次是2 0 4 1,因此最後剩下的數字是3。示例 1 輸入 n 5...
劍指 Offer 62 圓圈中最後剩下的數字
0,1,n 1這n個數字排成乙個圓圈,從數字0開始,每次從這個圓圈裡刪除第m個數字。求出這個圓圈裡剩下的最後乙個數字。例如,0 1 2 3 4這5個數字組成乙個圓圈,從數字0開始每次刪除第3個數字,則刪除的前4個數字依次是2 0 4 1,因此最後剩下的數字是3。示例 1 輸入 n 5,m 3 輸出 ...
劍指 Offer 62 圓圈中最後剩下的數字
0,1,n 1這n個數字排成乙個圓圈,從數字0開始,每次從這個圓圈裡刪除第m個數字。求出這個圓圈裡剩下的最後乙個數字。例如,0 1 2 3 4這5個數字組成乙個圓圈,從數字0開始每次刪除第3個數字,則刪除的前4個數字依次是2 0 4 1,因此最後剩下的數字是3。示例 1 輸入 n 5,m 3 輸出 ...