力扣:1227. 飞机座位分配概率

 

1、其实这道题有点小巧妙

首先排除特殊情况,只有一位乘客,此时,他只能坐自己的位置,所以返回1。

如果第一位乘客坐了自己的位,那么由题意可以知道第n位乘客必然是能坐在自己的座位上。

现在再来看第一位乘客坐错了位置。

那么我们可以认为第一位乘客所坐的就是第二位乘客的位置。

或许有人问,为什么呢?这里解释一下。

如果第一位乘客坐的是第三位乘客的位置,那么第二位乘客就必然能坐在自己的位置上,此时第二位乘客的存在与结果之间没有任何联系,那么我们是否就可以假设没有这第二位乘客和他的那个位置呢?答案是肯定的,去掉第二位乘客,问题将变成求第n-1位乘客是否能坐在自己的位置上,而原来的第三位乘客就变成了第二位乘客。

同理类推,我们就可以认为第一位乘客所坐的就是第二位乘客的位置。

同理,我们也可以认为第二位乘客所坐的就是第三位乘客的位置。(证明和前面一样)

以此类推,最后一位乘客必然无法坐在自己的座位上。

得出结论,如果第一位乘客坐在自己的位置上,那么最后一位乘客将坐在自己的座位上,反之,最后一位乘客将不会坐在自己的座位上,所以结果为1/2;

ps:另一种理解,根据上面的证明,我们可以直接假设第一位乘客所坐的就是最后一位乘客的位置,那么中间那些乘客都可以忽略,最终变成了n为2的问题,答案为1/2;

class Solution {
public:
    double nthPersonGetsNthSeat(int n) {
        if(n==1) return n;
        else return 0.5;
    }
};
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值