笔试记录-扔鸡蛋问题

news2024/11/27 18:23:08

写目录

  • 一个鸡蛋
  • 两个鸡蛋
  • 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.coloradmin.cn/o/992681.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

实现在一张图片中寻找另一张图片的目标

OpenCV库中的SIFT特征检测算法和FLANN&#xff08;快速最近邻搜索库&#xff09;匹配算法来找到一个图片中的元素在另一个图片中的位置&#xff0c;并在源图片中标出它们的位置。 以下是一个简单的例子&#xff0c;使用OpenCV库&#xff0c;利用SIFT特征检测算法&#xff0c;在…

Kafka中Producer源码解读

Producer源码解读 在 Kafka 中, 我们把产生消息的一方称为 Producer 即 生产者, 它是 Kafka 的核心组件之一, 也是消息的来源所在。它的主要功能是将客户端的请求打包封装发送到 kafka 集群的某个 Topic 的某个分区上。那么这些生产者产生的消息是怎么传到 Kafka 服务端的呢&a…

如何使用Google Compute Engine入门指南快速创建和配置您的云虚拟机实例

文章目录 步骤1&#xff1a;创建 Google Cloud Platform&#xff08;GCP&#xff09;账户步骤2&#xff1a;设置 GCP 项目步骤3&#xff1a;启用 Google Compute Engine API步骤4&#xff1a;安装 Google Cloud SDK步骤5&#xff1a;创建虚拟机实例步骤6&#xff1a;连接到虚拟…

ADL200N单相逆流监测多功能仪表在光伏中的应用-安科瑞黄安南

安科瑞电气-黄安南 ,18/*76-150-/6237 随着光伏行业的发展&#xff0c;部分地区村级变压器及工业用电变压器容量与光伏项目的装机容量处于饱和。电网公司要求对后建的光伏并网系统为不可逆流发电系统&#xff0c;指光伏并网系统所发生的电由本地负载消耗&#xff0c;多余的电不…

100万级连接,爱奇艺WebSocket网关如何架构

说在前面 在40岁老架构师 尼恩的读者社区(50)中&#xff0c;很多小伙伴拿到一线互联网企业如阿里、网易、有赞、希音、百度、滴滴的面试资格。 最近&#xff0c;尼恩指导一个小伙伴简历&#xff0c;写了一个《高并发网关项目》&#xff0c;此项目帮这个小伙拿到 字节/阿里/微…

IDEFICS 简介: 最先进视觉语言模型的开源复现

我们很高兴发布 IDEFICS ( Image-aware Decoder Enhanced la Flamingo with Ininterleaved Cross-attention S ) 这一开放视觉语言模型。IDEFICS 基于 Flamingo&#xff0c;Flamingo 作为最先进的视觉语言模型&#xff0c;最初由 DeepMind 开发&#xff0c;但目前尚未公开发布…

【广州华锐互动】元宇宙技术如何赋能传统工业企业?

随着科技的飞速发展&#xff0c;我们正处于工业革命4.0的时代&#xff0c;数字化、网络化和智能化正在深刻地改变着我们的生活和工作方式。在这个变革的大潮中&#xff0c;工业元宇宙平台应运而生&#xff0c;为企业带来了前所未有的机遇和挑战。 广州华锐互动开发的工业元宇宙…

什么是“护网行动”?看完你就懂了

近几年&#xff0c;随着大数据、物联网、云计算的飞速发展&#xff0c;网络攻击触手已经从企业逐渐伸向国家&#xff0c;国家关键信息基础设施建设也面临着无形威胁。我们应当未雨绸缪&#xff0c;厉兵秣马&#xff0c;化被动为主动。 在这种严峻的网络安全态势之下&#xff0c…

第7节-PhotoShop基础课程-视图调整

文章目录 前言1.视图菜单1. 视图操作1.校样颜色 Ctrl Y2.色域警告 Ctrl Shift Y3.像素长宽比 2.显示操作1.大小调整1.Alt 滚轮2.放大选项3.按空格 出现抓手 2.按屏幕大小缩放 Ctrl 0(数字0)3.按实际大小缩放 Ctrl 11.标准屏幕模式2.带有菜单栏的全屏模式3.全屏模式4.只显…

【扩散模型】4、Improved DDPM | 引入可学习方差和余弦加噪机制来提升 DDPM

文章目录 一、背景二、Improved DDPM——提升 Log-likelihood2.1 可学习的方差2.2 改进 noise schedule2.3 降低梯度噪声 三、效果 论文&#xff1a;Improved Denoising Diffusion Probabilistic Models 代码&#xff1a;https://link.zhihu.com/?targethttps%3A//github.com…

浏览器原理-v8引擎

什么是MVVM呢? 口通常我们学习一个概念&#xff0c;最好的方式是去看维基百科(对&#xff0c;千万别看成了百度百科)https://zh.wikipedia.org/wiki/MVVM View层: 视图层 >在我们前端开发中&#xff0c;通常就是DOM层 > 主要的作用是给用户展示各种信息。 Model层: t&g…

AI大语言模型时代构建全新数据平台

在大语言模型的引领下&#xff0c;数据平台领军企业 Databricks 和 Snowflake 的未来重置&#xff0c;探讨了 Databricks 和 Snowflake 等知名平台&#xff0c; 存储领域的 Delta、udi、Iceberg&#xff0c;还是实时化数据处理领域的 Databricks、Snowflake 1、LLM 给大数据企…

如何为虚拟机添加磁盘,扩充原有分区的磁盘空间

如何为虚拟机添加磁盘&#xff0c;扩充原有分区的磁盘空间 关机新增磁盘 虚拟机关机的状态下&#xff0c;在 VMware 当中新增一块磁盘&#xff0c;选中左边要添加磁盘的虚拟机镜像&#xff0c;然后鼠标右键点击设置。 选中磁盘点击添加 点击下一步&#xff0c;悬着SCSI这个…

【数字IC/FPGA】Verilog中的force和release

在Verilog中&#xff0c;将force用于variable会覆盖掉过程赋值&#xff0c;或者assign引导的连续&#xff08;procedural assign&#xff09;赋值&#xff0c;直到release。 下面通过一个简单的例子展示其用法&#xff1a; 加法器代码 module adder ( input logic [31:0] a, …

ISYSTEM调试实践12-软件运行时间的优化

实际工程的运行要比上篇文章提到的例程复杂的多 ISYSTEM调试实践11-Profiler Timeline和软件运行时间分析 由于复杂的应用层模型和底层任务&#xff0c;假定应用层模型的运行周期是10ms&#xff0c;任务函数的执行时间往往超过1ms&#xff0c;这时候就必须要考虑函数执行本身的…

什么是护网行动?

护网&#xff0c;也称“网络保护”&#xff0c;是指网络安全人员对企业或组织的网络进行检查、维护和保护&#xff0c;以防止网络受到黑客攻击、病毒、木马或其它恶意程序的侵入和损害。护网工作包括&#xff1a;网络安全规划、网络配置和控制、漏洞发现和修复、入侵检测和防范…

ES6 拓展(下)

一、函数的拓展 1.1、默认参数 在ES5中设置默认参数&#xff1a; function func(words, name) {name name || "闷墩儿";console.log(words, name); } func("大家好&#xff01;我是"); func("大家好&#xff01;我是", "憨憨");func(…

使用React18+Ts创建项目

1. 创建项目 首先&#xff0c;使用create-react-app工具创建一个新的React项目&#xff1a; npx create-react-app 项目名 --template typescript2. 安装依赖项 使用脚手架创建项目后&#xff0c;自带react-dom等依赖项&#xff0c;但react中的所用的路由方法是react-router…

建站系列(八)--- 本地开发环境搭建(WNMP)

目录 相关系列文章前言一、准备工作二、Nginx安装三、MySQL安装四、PHP安装及Nginx配置五、总结 相关系列文章 建站系列&#xff08;一&#xff09;— 网站基本常识 建站系列&#xff08;二&#xff09;— 域名、IP地址、URL、端口详解 建站系列&#xff08;三&#xff09;— …

cookie、session、Token区别

1 HTTP无状态&#xff0c;什么是无状态&#xff1f; http 无法知道是哪个客户端发出的请求&#xff0c;也无法判断是否为已登录用户请求&#xff0c;这就导致了 http 无法记住用户的登录状态。 2 cookie和session的是什么&#xff1f;为什么session这么好还要用cookie? coo…