笔试记录-扔鸡蛋问题

写目录

  • 一个鸡蛋
  • 两个鸡蛋
  • K个鸡蛋

今天面试官问了我这个扔鸡蛋问题,以前学过,但是面试的时候想不起来了,应该是直接寄了,接下来总结一下这个问题的动态规划做法.

问题:有一个N层高的楼,现在给你若干个鸡蛋,要求你用最少的次数测试出第一个鸡蛋会碎的楼层

一个鸡蛋

只需要从第一层开始一层一层扔就行了,最坏情况需要扔N次

两个鸡蛋

两个鸡蛋
分析:
当我们在第i层扔鸡蛋时,会有两种情况

  • 鸡蛋碎了,那代表碎了,那代表答案肯定在 [1,i-1]这个区间,鸡蛋只剩一个了,所以只能一层一层扔,所以最坏情况就是 i-1 + 1 = i次
  • 鸡蛋没碎,那就又回到了对剩下的 n -i 层有两个鸡蛋测试的情况,所以此时最坏情况是 1 + dp[n-i]

所以我们需要取两种情况中次数最坏的情况

代码如下:

class Solution {
public:int twoEggDrop(int n) {if(n<=2)return n;int dp[1001];for(int i=1;i<=n;i++){int mmin=INT_MAX;for(int j=1;j<=i;j++){mmin=min(mmin,max(j,dp[i-j]+1));}dp[i]=mmin;}return dp[n];}
};

K个鸡蛋

K个鸡蛋
这里直接使用力扣网的官方题解:
动态规划法+二分查找

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

class Solution {
public:unordered_map<int,int> mmap;int dp(int k,int n){if(mmap.find(n*100+k)==mmap.end()){int ans;if(n==0)ans=0;else if(k==1)ans=n;else{int left=1;int right=n;while(left+1<right){int mid=(left+right)>>1;int t1=dp(k-1,mid-1);int t2=dp(k,n-mid);if(t1<t2){left=mid;}else if(t1>t2){right=mid;}else{left=right=mid;}}ans=1+min(max(dp(k-1,left-1),dp(k,n-left)),max(dp(k-1,right-1),dp(k,n-right)));}mmap[100*n+k]=ans;}return mmap[100*n+k];}int superEggDrop(int k, int n) {return dp(k,n);}
};

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/126292.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

华为云云耀云服务器L实例评测|使用宝塔面板管理服务器,并搭建个人博客网站

作者简介&#xff1a;一名云计算网络运维人员、每天分享网络与运维的技术与干货。 公众号&#xff1a;网络豆 座右铭&#xff1a;低头赶路&#xff0c;敬事如仪 个人主页&#xff1a; 网络豆的主页​​​​​ 目录 前言 介绍&#xff1a; 一.购买使用华为云云耀服务器 …

【postgresql 基础入门】数据库服务的管理,启动、停止、状态查看、配置加载、重启都在这里

数据库服务管理 ​专栏内容&#xff1a; postgresql内核源码分析手写数据库toadb并发编程 ​开源贡献&#xff1a; toadb开源库 个人主页&#xff1a;我的主页 管理社区&#xff1a;开源数据库 座右铭&#xff1a;天行健&#xff0c;君子以自强不息&#xff1b;地势坤&#xff…

解决css设置图片大小不生效的问题

今天在做css布局时发现一个问题&#xff1a;设置图片大小不生效&#xff1a; 如上图所示&#xff1a;左上角两个图标的大小不一致&#xff0c;第一个是56x56,第二个是49x49,所以要把第二个的高度设置成56px&#xff1a; .mi-home img {height: 56px; }但是如上代码&#xff0c;…

R语言STAN贝叶斯线性回归模型分析气候变化影响北半球海冰范围和可视化检查模型收敛性...

原文链接&#xff1a;http://tecdat.cn/?p24334 像任何统计建模一样&#xff0c;贝叶斯建模可能需要为你的研究问题设计合适的模型&#xff0c;然后开发该模型&#xff0c;使其符合你的数据假设并运行&#xff08;点击文末“阅读原文”获取完整代码数据&#xff09;。 相关视频…

Python 03(循环语句)

Python03&#xff08;循环语句&#xff09; 文章目录 Python03&#xff08;循环语句&#xff09;一、while语句二、while实现猜数字三、while循环的嵌套while循环嵌套实例需求&#xff1a; 四、for循环1、什么 是for循环2、语法3、执行流程4、for循环的基本使用5、range()函数6…

【C++从0到王者】第二十六站:一些经典的多态面试题

文章目录 前言一、多态的常见选择二、多态的常见问答总结 前言 多态是C的一大疑难杂症&#xff0c;有很多细枝末节的东西非常繁琐&#xff0c;这里搜集了一些常见的选择与问答。可以为大家带来帮助理解多态 一、多态的常见选择 下面哪种面向对象的方法可以让你变得富有( ) A: …

WireShark抓包工具的安装

1.下载安装包 在官网或者电脑应用商城都可以下载 2.安装 打开安装包&#xff0c;点击next 点击next 选择UI界面&#xff0c;两种都装上 根据习惯选择 选择安装位置点击安装 开始安装安装成功

生成订单30分钟未支付,则自动取消,该怎么实现?

今天给大家上一盘硬菜&#xff0c;并且是支付中非常重要的一个技术解决方案&#xff0c;有这块业务的同学注意自己试一把了哈&#xff01; 在开发中&#xff0c;往往会遇到一些关于延时任务的需求。例如 生成订单30分钟未支付&#xff0c;则自动取消 生成订单60秒后,给用户…

ArcGIS API for JavaScript 4.x 实现动态脉冲效果

1. 设计思路 主要通过定时刷新&#xff0c;每一次的脉冲渲染圈不停的放大&#xff0c;并且透明度缩小&#xff0c;直到达到一定的大小再退回0。 2. 实现代码 import MapView from "arcgis/core/views/MapView"; import GraphicsLayer from "arcgis/core/laye…

【Git】Git 基础

Git 基础 参考 Git 中文文档 — https://git-scm.com/book/zh/v2 1.介绍 Git 是目前世界上最先进的分布式版本控制系统&#xff0c;有这么几个特点&#xff1a; 分布式&#xff1a;是用来保存工程源代码历史状态的命令行工具保存点&#xff1a;保存点可以追溯源码中的文件…

如何用Java编写代码来等待一个线程join()??

笔者在前面几篇文章中详细的讲解了&#xff1a;线程and进程的区别及其各种对比&#xff0c;如何中断一个线程等文章&#xff0c;接下来本篇文章主要讲解&#xff1a;用Java编写代码来等待一个线程join()&#xff1f;&#xff1f; 线程之间是并发执行的&#xff0c;操作系统对于…

MySQL内外连接

MySQL内外链接 内连接显示SMITH的名字和部门名称 外连接左外连接查询所有学生的成绩&#xff0c;如果这个学生没有成绩&#xff0c;也要将学生的个人信息显示出来 右外连接把所有的成绩都显示出来&#xff0c;即使这个成绩没有学生与它对应&#xff0c;也要显示出来列出部门名称…

C#学习 - 初识类与名称空间

类&#xff08;class&#xff09;& 名称空间&#xff08;namespace&#xff09; 类是最基础的 C# 类型&#xff0c;是一个数据结构&#xff0c;是构成程序的主体 名称空间以树型结构组织类 using System; //前面的using就是引用名称空间 //相当于C语言的 #include <..…

python-55-打包exe执行

目录 前言一、pyinstaller二、实践打包exe1、遇坑1&#xff1a;Plugin already registered2、遇坑2&#xff1a;OSError 句柄无效 三、总结 前言 你是否有这种烦恼&#xff1f; 别人在使用你的项目时可能还需要安装各种依赖包&#xff1f;别人在使用你的项目&#xff0c;可能…

MyBatis原理分析手写持久层框架

目录 1 JDBC操作数据库问题分析2 JDBC问题分析和解决思路3 自定义持久层框架_思路分析3.1 使用JDBC和使用持久层框架区别3.2 核心接口/类重点说明3.3 项目使用端3.4 自定义框架本身3.5 最终手写的持久层框架结构参考 4 自定义持久层框架_编码5 自定义持久层框架优化 1 JDBC操作…

初始化一个 vite + vue 项目

创建项目 首先使用以下命令创建一个vite项目 npm create vite然后根据提示命令 cd 到刚创建的项目目录下&#xff0c;使用npm install安装所需要的依赖包&#xff0c;再使用npm run dev即可启动项目 配置 vite.config.js 添加process.env配置&#xff0c;如果下面 vue-route…

2023高教社杯数学建模国赛C题思路解析+代码+论文

如下为C君的2023高教社杯全国大学生数学建模竞赛C题思路分析代码论文 C题蔬菜类商品的自动定价与补货决策 在生鲜商超中&#xff0c;一般蔬菜类商品的保鲜期都比较短&#xff0c;且品相随销售时间的增加而变差, 大部分品种如当日未售出&#xff0c;隔日就无法再售。因此&…

如何统计网站的访问量

本文介绍的是使用redis的HyperLoglog实现uv的统计功能。 背景 首先我们先明确一下uv这个名词代表的实际意义。uv代表的是通过网页访问浏览的人数&#xff0c;和文章的阅读量差不多&#xff0c;但是需要注意的是&#xff0c;一个人即使是多次访问&#xff0c;也只算一次。 所…

新风机未来什么样?

新风机在未来将会有许多令人期待的发展和改进&#xff0c;让我们一起来看一看吧&#xff01;以下是新风机未来的一些可能性&#xff1a; 智能化和智能家居&#xff1a;新风机将更多地与智能家居系统整合&#xff0c;通过物联网和人工智能技术&#xff0c;实现智能控制和智能调节…

vue+antd——实现table表格的打印——分页换行,每页都有表头——基础积累

这里写目录标题 场景效果图功能实现1&#xff1a;html代码功能实现2&#xff1a;css样式功能实现3&#xff1a;js代码补充内容page-break-inside 属性page-break-after属性page-break-before 属性 场景 最近在写后台管理系统时&#xff0c;遇到一个需求&#xff0c;就是要实现…