class Solution:
def nthPersonGetsNthSeat(self, n: int) -> float:
if n == 1:
return 1
if n == 2:
return 0.5
res = 1 / n
for i in range(2, n):
res += self.nthPersonGetsNthSeat(n - i + 1) * 1 / n
return res
class Solution:
seen = {}
def nthPersonGetsNthSeat(self, n: int) -> float:
if n == 1:
return 1
if n == 2:
return 0.5
if n in self.seen:
return self.seen[n]
res = 1 / n
for i in range(2, n):
res += self.nthPersonGetsNthSeat(n - i + 1) * 1 / n
self.seen[n] = res
return res
class Solution:
def nthPersonGetsNthSeat(self, n: int) -> float:
if n == 1:
return 1
if n == 2:
return 0.5
dp = [1, .5] * n
for i in range(2, n):
dp[i] = 1 / n
for j in range(2, i):
dp[i] += dp[i - j + 1] * 1 / n
return dp[-1]
class Solution:
def nthPersonGetsNthSeat(self, n: int) -> float:
if n == 1:
return 1
if n == 2:
return 0.5
dp = [1, .5] * n
for i in range(2, n):
dp[i] = 1/n+(n-2)/n * dp[n-1]
return dp[-1]
f(n) = f(n - 1)
class Solution:
def nthPersonGetsNthSeat(self, n: int) -> float:
return 1 if n == 1 else .5