有 n 位乘客即将登机,飞机正好有 n 个座位。第一位乘客的票丢了,他随便选了一个座位坐下。
剩下的乘客将会:
如果他们自己的座位还空着,就坐到自己的座位上,
当他们自己的座位被占用时,随机选择其他座位
第 n 位乘客坐在自己的座位上的概率是多少?
来源:力扣(LeetCode)
链接:https://leetcode-cn.com/problems/airplane-seat-assignment-probability
著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。

乍一看应该想到:对于第一个人有三种可能:

①坐上自己的座位,那么之后每一个人都能坐到自己的座位上

②坐上2~n-1内的座位上(假设为x号),那么x之前的所有人都能坐上自己的座位,x号随机坐,此时转化为N=n-x+1的问题

③直接坐上n的位置,n没有位置坐

因此,我们可以从n=2开始计算,存储之前所有答案即可

要注意的是,虽然n=1时答案为1,但是存储的答案应该为0,因为除了n号外的人坐上座位都会使得n号坐不上n座位

对于n=2,显然概率为1/2

对于n=n呢? 概率应该为 (1/n)*1 (坐上自己位置)+(1/n)*P(n-1) (坐上2号位置,变成n-1人问题)+(1/n)*P(n-2) (坐上2号位置,变成n-2人问题) …+(1/n)*0 (坐上n号位置,直接gg)

即P(n)=(1/n)*1+(1/n)(P(n-1)+P(n-2)…+P(1))

有思路了就,写!

等等!

稍微算了两个,在P(1)=0,P(2)=1/2的情况下,P(3)P(4)也都等于1/2

是不是,除了P(1)都等于1/2呢?

用数学归纳法其实很好证明,

在2~n-1时P等于1/2 1时P等于0的前提下,带入以上通式可以得到P(n)就正好等于1/2!!!

而P(1)=0,P(2)=1/2

class Solution {public double nthPersonGetsNthSeat(int n) {if(n==1){return 1;}else{return 0.5;}}
}

说好的一行呢?

class Solution {public double nthPersonGetsNthSeat(int n) {return n==1?1:0.5;}
}


【Java】LeetCode 1227. 飞机座位分配概率——数学好一行解决相关推荐

  1. Java实现 LeetCode 1227 飞机座位分配概率

    1227. 飞机座位分配概率 有 n 位乘客即将登机,飞机正好有 n 个座位.第一位乘客的票丢了,他随便选了一个座位坐下. 剩下的乘客将会: 如果他们自己的座位还空着,就坐到自己的座位上, 当他们自己 ...

  2. LeetCode 1227. 飞机座位分配概率(DP+数学归纳法)

    1. 题目 有 n 位乘客即将登机,飞机正好有 n 个座位.第一位乘客的票丢了,他随便选了一个座位坐下. 剩下的乘客将会: 如果他们自己的座位还空着,就坐到自己的座位上, 当他们自己的座位被占用时,随 ...

  3. LeetCode 1227. 飞机座位分配概率

  4. 【LeetCode】1227. 飞机座位分配概率

    一.题目描述 有 n 位乘客即将登机,飞机正好有 n 个座位.第一位乘客的票丢了,他随便选了一个座位坐下. 剩下的乘客将会: 如果他们自己的座位还空着,就坐到自己的座位上, 当他们自己的座位被占用时, ...

  5. 1227 飞机座位分配概率

    题目描述 : 有 n 位乘客即将登机,飞机正好有 n 个座位.第一位乘客的票丢了,他随便选了一个座位坐下. 剩下的乘客将会: 如果他们自己的座位还空着,就坐到自己的座位上, 当他们自己的座位被占用时, ...

  6. Leetcode-1227. 飞机座位分配概率

    链接 1227. 飞机座位分配概率 题目 有 n 位乘客即将登机,飞机正好有 n 个座位.第一位乘客的票丢了,他随便选了一个座位坐下. 剩下的乘客将会: 如果他们自己的座位还空着,就坐到自己的座位上, ...

  7. Leetcode 1227:飞机座位分配概率

    题目描述 有 n 位乘客即将登机,飞机正好有 n 个座位.第一位乘客的票丢了,他随便选了一个座位坐下. 剩下的乘客将会: 如果他们自己的座位还空着,就坐到自己的座位上, 当他们自己的座位被占用时,随机 ...

  8. leetcode算法题--飞机座位分配概率

    原题链接:https://leetcode-cn.com/problems/airplane-seat-assignment-probability/ 假设有n个人,即n个座位,当第1个人入座时有三种 ...

  9. 251、飞机座位分配概率

    题目描述: 有 n 位乘客即将登机,飞机正好有 n 个座位.第一位乘客的票丢了,他随便选了一个座位坐下. 剩下的乘客将会: 如果他们自己的座位还空着,就坐到自己的座位上, 当他们自己的座位被占用时,随 ...

最新文章

  1. AI用50个三角形画出抽象版蒙娜丽莎,有股后现代的感觉了 | 谷歌大脑出品
  2. 如何获取ResultSet的行数和列数
  3. 如何使用vs将asp.net core项目添加容器支持并发布docker镜像到私有dockerhub和添加k8s/helm管理...
  4. python中if语句求最大值_Python中用max()方法求最大值的介绍
  5. 惠斯通电桥信号调理芯片_变频器通电后无反应,如何检查维修?
  6. PHP根据开始、结束时间:计算开始、结束时间占当月总天数的百分比
  7. C中使用汇编交换两个值
  8. paip.自动import的实现跟java.lang.SecurityException Prohibited package name java
  9. 网络安全|墨者学院在线靶场|投票系统程序设计缺陷分析
  10. android程序设计学习,android编程入门很简单 android编程入门自学
  11. arcgis 实验教程 第二章 ArcCatalog 简单操作--创建自己独特的工具箱
  12. Embase,PubMed,Cochrane,WebOfScience,ScienceDirect检索方法
  13. ACRUSH 楼教主的回忆录
  14. 常用工具:IDEA、vs code、Navicat、Postman、HBuilderX、微信开发者工具
  15. 电脑做照片视频的软件用哪个?3步制作高清照片视频,超多酷炫转场效果
  16. 汽车之家的后台怎么统计对比记录的,怎么做数据分析?
  17. 深入理解transformer源码
  18. 用户微服务用户注册功能实现
  19. 用python画小黄人
  20. oracle计算收益率,oracle 分析函数总结--仅供参考

热门文章

  1. 艺2——当代水墨人物画家扬笛作品赏析
  2. 黑盒子测试方法(Black-Box Testing)
  3. 黑盒子测试用例设计方法
  4. 链上资产归集科普:深度还原MXC抹茶DOGGY资产归集被误解全过程
  5. 我的世界html如何安装mod,网易我的世界怎么装mod(mod安装详细教程)
  6. 企业级信息系统开发讲课笔记3.4 基于Java配置类SSM框架西蒙购物网
  7. 如何做到输入一个英语句子,将句中单词分行打印输出
  8. 笔试题:利用素数定理计算100以内素数的个数
  9. 6月26日国内四大证券报刊头版内容精华全扫描
  10. swift3 设置设备方向支持(supportedInterfaceOrientations)