有 n 位乘客即将登机,飞机正好有 n 个座位。第一位乘客的票丢了,他随便选了一个座位坐下。
剩下的乘客将会:如果他们自己的座位还空着,就坐到自己的座位上,
当他们自己的座位被占用时,随机选择其他座位
第 n 位乘客坐在自己的座位上的概率是多少?
示例 1:输入:n = 1 输出:1.00000
解释:第一个人只会坐在自己的位置上。
示例 2:输入: n = 2 输出: 0.50000
解释:在第一个人选好座位坐下后,第二个人坐在自己的座位上的概率是 0.5。
提示:1 <= n <= 10^5
解题思路分析1、找规律/数学;时间复杂度O(1),空间复杂度O(1)
func nthPersonGetsNthSeat(n int) float64 {
if n == 1 {
return 1
}
return 0.5
}
2、递推;时间复杂度O(n),空间复杂度O(1)
func nthPersonGetsNthSeat(n int) float64 {
res := 1.0
sum := 1.0
// f(n) = 1/n * (f(n-1) f(n-2) f(n-3) ... f(2) 1)
for i := 2; i <= n; i {
nth := 1.0 / float64(i)
res = nth * sum
sum = res
}
return res
}
总结
Medium题目,概率系列问题,可以看一下具体分析
Copyright © 2024 妖气游戏网 www.17u1u.com All Rights Reserved