题目描述:
有 n 位乘客即将登机,飞机正好有 n 个座位。第一位乘客的票丢了,他随便选了一个座位坐下。
剩下的乘客将会:
如果他们自己的座位还空着,就坐到自己的座位上,
当他们自己的座位被占用时,随机选择其他座位
第 n 位乘客坐在自己的座位上的概率是多少?
示例 1:
输入:n = 1
输出:1.00000
解释:第一个人只会坐在自己的位置上。
示例 2:
输入: n = 2
输出: 0.50000
解释:在第一个人选好座位坐下后,第二个人坐在自己的座位上的概率是 0.5。
提示:
1 <= n <= 10^5
来源:力扣(LeetCode)
链接:https://leetcode-cn.com/problems/airplane-seat-assignment-probability
著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。
emm头脑不够用
没想出来
1.动态规划
很容易想到,如果第一个人正好坐在自己的位置,那么之后所有的人都会坐在自己的位置。
如果第一个人正好坐在第n个人的位置,那么第n个人没可能坐在自己的位置。
如果第一个人坐在除了自己位置以及第n个人的位置之外的任何位置,情况就如同n-1个座位情况。
所以转移方程为: dp[i] = 1 / i + (i - 2) / i * dp[i - 1]
var nthPersonGetsNthSeat = function(n) {
let dp = [0, 1];
for(let i = 2;i <= n;i++) {
dp[i] = (1 / i) + (dp[i - 1] * (i - 2) / i);
}
return dp[n];
};
2.数学法
上式通过数学归纳法发现
当n = 1时,概率为1,
其他情况,概率为0.5。
var nthPersonGetsNthSeat = function(n) {
if(n == 1) {
return 1;
}
return 0.5;
};
作者:virginiadb-Y0WqAUJ773
链接:https://leetcode-cn.com/problems/airplane-seat-assignment-probability/solution/dong-tai-gui-hua-fa-he-shu-xue-fa-by-virginiadb-y0/
来源:力扣(LeetCode)
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。
这个解释的比较详细