你将获得 K 个鸡蛋,并可以使用一栋从 1 到 N 共有 N 层楼的建筑。
每个蛋的功能都是一样的,如果一个蛋碎了,你就不能再把它掉下去。
你知道存在楼层 F ,满足 0 <= F <= N 任何从高于 F 的楼层落下的鸡蛋都会碎,从 F 楼层或比它低的楼层落下的鸡蛋都不会破。
每次移动,你可以取一个鸡蛋(如果你有完整的鸡蛋)并把它从任一楼层 X 扔下(满足 1 <= X <= N)。
你的目标是确切地知道 F 的值是多少。
无论 F 的初始值如何,你确定 F 的值的最小移动次数是多少?
来源:力扣(LeetCode)
链接:https://leetcode-cn.com/problems/super-egg-drop

java
假设我们只有一个鸡蛋,为了测出F,我们只能从第一层一层层的往上试,直到鸡蛋被摔碎为止,题目考虑的是最坏情况的最少次数,所以最坏情况是到第N层才摔碎,所以次数即为楼层数,即一个鸡蛋,一层楼,要移动1次.一个鸡蛋,两层楼,要移动2次…
假设我们有无数个鸡蛋,那么最优的方法肯定是二分法,即100层楼,先试第50层楼,不管摔碎与否,都能排除掉一半的可能,考虑最坏情况,最后移动的次数为log2 N次,向上取整
但关键我们的鸡蛋有限,所以我们为了效益最大化,我们先选一个楼层,先设这个楼层为mid,假设在这个楼层扔可以得到最优解,那么我们扔完后有2种情况,一是蛋碎,那么我们只需考虑K-1个蛋在N-mid的楼层里的最优解。第二种情况是蛋没碎,那么我们只需考虑K个蛋在mid-1的楼层里的最优解。因为考虑最坏情况,所以我们取这两个情况中,值大的那个,而这两种情况的解一个随mid增大而增大,一个随mid增大而减小,所以当这两种情况的次数一样时,即为mid的取值,即是最小值。
这就相当于把一个大的情况化小,倒推回去,一步步化小,最后化到1个楼层,k个鸡蛋和n个楼层,一个鸡蛋比较。而每化一次,就加一次次数。
所以放映在代码上我们就正着推回去
假设这是个K*N大小的表格
我们从第一个空开始,即一个鸡蛋,一层楼的情况一个个推过去,一直推到K个鸡蛋,N层楼就行,相当于把这张表填完
但在力扣里3个for循环会超时,所以我们用二分法加快速度,用二分法查找什么时候K-1个蛋在N-mid的楼层里的最优解和K个蛋在mid-1的楼层里的最优解相等。

力扣887题-鸡蛋掉落相关推荐

  1. [Leedcode][JAVA][第887题][鸡蛋掉落][谷歌面试][动态规划]

    [问题描述] [887. 鸡蛋掉落] 你将获得 K 个鸡蛋,并可以使用一栋从 1 到 N 共有 N 层楼的建筑.每个蛋的功能都是一样的,如果一个蛋碎了,你就不能再把它掉下去.你知道存在楼层 F ,满足 ...

  2. 数据结构与算法--力扣109题将有序双向链表转换为二叉搜索树

    将有序数组转换为二叉搜索树 近一年都比较关注算法相关的知识,也刷了不少题,之前的文章中大多也是算法相关的文章,但是感觉每次遇到树相关的题型都不能应对自如,因此还是有必要在相关知识上下功夫,因此有此次总 ...

  3. 教你创建电脑、手机同步的markdown云笔记--力扣刷题力荐!

    开篇先致歉 其他不谈,开篇必须先给各位读者道个歉,年后工作上比较忙,加上最近闲暇的时间都用来在力扣上刷算法题了,导致公众号断更有些严重啊.再加上年后将健身减重提上了日程,时间上就更显的捉襟见肘了. 不 ...

  4. 《剑指Offer》力扣刷题笔记(03-10)

    <剑指Offer>力扣刷题笔记(03-10) 最近确实有点闲,想在进组搬砖之前找点有意义的事干,于是,就开始刷<剑指Offer>.<程序员面试金典>等书上的题目,也 ...

  5. 买卖股票的最佳时机——力扣121题

    买卖股票的最佳时机--力扣121题 暴力解法 从前往后,不断将元素之间进行两两比较(类似冒泡排序中),然后不断更新出maxProfit的值.例如数组[7,1,5,3,6,4]中,从7开始,则7 -&g ...

  6. 力扣编程题-解法汇总

    一.力扣链接: 题库 - 力扣 (LeetCode) 全球极客挚爱的技术成长平台 备注:以后每个工作日从前往后刷一道题,然后再加一道每日新题.每天两道题. 二.模版: 标题: 力扣解法汇总5-正则表达 ...

  7. 力扣417题太平洋大西洋水流问题

    力扣417题太平洋大西洋水流问题 题目描述:有一个 m × n 的矩形岛屿,与 太平洋 和 大西洋 相邻. "太平洋" 处于大陆的左边界和上边界,而 "大西洋" ...

  8. 力扣刷题之二叉树的层序遍历

                                                      Welcome to you, 每日一刷系列 二叉树的层序遍历 二叉树的层序遍历II 二叉树的右视图 ...

  9. 程序员面试需要刷力扣算法题吗

    这里写目录标题 1. 程序员面试需要刷力扣算法题吗 1.1. 算法题的一些特征 1.2. 为什么要考查算法 1.3. 目前面试主要考查 3 类 1. 程序员面试需要刷力扣算法题吗 1.1. 算法题的一 ...

  10. 『力扣刷题』5275_找出井字棋的获胜者 解题代码

    LeetCode-cn 力扣刷题 LeetCode-cn力扣刷题目录 165周赛 5275_找出井字棋的获胜者 * 5275. 找出井字棋的获胜者 显示英文描述* 用户通过次数0* 用户尝试次数0* ...

最新文章

  1. 【PDF下载】给专业选手的 Python 笔记
  2. java反射泛型类型,【Java反射】Java 泛型基础
  3. SpringBoot整合 ActiveMQ、SpringBoot整合RabbitMQ、SpringBoot整合Kafka
  4. ldap接触(1)之如何把安全证书导入到java中的cacerts证书库
  5. 陈华钧 | 知识图谱构建,将成为智能金融的突破口
  6. 作者:李涛,男,南京邮电大学计算机学院、软件学院院长,南京邮电大学大数据研究院院长。...
  7. 安卓分辨率_安卓界面的尺寸规范有哪些?
  8. flash flip 效果集
  9. 20144303《Java程序设计》第10周学习总结
  10. 安装金蝶K3 提示:“安装包配置文件(setup.lst)文件不存在”
  11. # JDK7+ MethodHandle
  12. GJB 5000B-2021下载-见文章结尾
  13. 微信公众号不限次数发送消息
  14. Take me to your heart(English Song)
  15. 福州到横店嘉兴三日游(仅供参考)
  16. 嵌入式实时操作系统及应用开发(第三版)罗蕾主编光盘镜像
  17. jmap 几个慎用操作
  18. 让你效率飞起的右键工具——超级右键
  19. PTA乙级题解(110题全)
  20. python凤凰新闻数据分析(四)整合

热门文章

  1. 0、EasyExcel自定义转换器Converter
  2. 协议转换器的作用有哪些?
  3. linux下启动spoon提示Could not load SWT library
  4. linux服务器巡检工作的意义,Linux服务器巡检报告
  5. PIKA trouble01 -- pika主从关系不能建立及主从断连问题
  6. 2020第六届上海市大学生网安大赛Misc|writeup
  7. 使用springboot jpa完成复杂的分页查询
  8. python中摄氏度华氏度相互转换
  9. 程序员5大热门发展行业,就业迷茫的同学注意啦!
  10. 5年内在豫投资超30亿元 重点助力河南智慧城市运营