1
0
mirror of https://gitee.com/coder-xiaomo/leetcode-problemset synced 2025-01-11 02:58:13 +08:00
Code Issues Projects Releases Wiki Activity GitHub Gitee
leetcode-problemset/leetcode-cn/problem (Chinese)/鸡蛋掉落-两枚鸡蛋 [egg-drop-with-2-eggs-and-n-floors].html

42 lines
2.3 KiB
HTML
Raw Normal View History

2022-03-27 20:45:09 +08:00
<p>给你 <strong>2&nbsp;枚相同 </strong>的鸡蛋,和一栋从第 <code>1</code>&nbsp;层到第 <code>n</code> 层共有 <code>n</code> 层楼的建筑。</p>
<p>已知存在楼层 <code>f</code> ,满足&nbsp;<code>0 &lt;= f &lt;= n</code> ,任何从 <strong>高于 </strong><code>f</code> 的楼层落下的鸡蛋都<strong> 会碎 </strong>,从 <strong><code>f</code> 楼层或比它低 </strong>的楼层落下的鸡蛋都 <strong>不会碎 </strong></p>
<p>每次操作,你可以取一枚<strong> 没有碎</strong> 的鸡蛋并把它从任一楼层 <code>x</code> 扔下(满足&nbsp;<code>1 &lt;= x &lt;= n</code>)。如果鸡蛋碎了,你就不能再次使用它。如果某枚鸡蛋扔下后没有摔碎,则可以在之后的操作中<strong> 重复使用 </strong>这枚鸡蛋。</p>
<p>请你计算并返回要确定 <code>f</code> <strong>确切的值 </strong><strong>最小操作次数</strong> 是多少?</p>
<p>&nbsp;</p>
<p><strong>示例 1</strong></p>
<pre>
<strong>输入:</strong>n = 2
<strong>输出:</strong>2
<strong>解释:</strong>我们可以将第一枚鸡蛋从 1 楼扔下,然后将第二枚从 2 楼扔下。
如果第一枚鸡蛋碎了,可知 f = 0
如果第二枚鸡蛋碎了,但第一枚没碎,可知 f = 1
否则,当两个鸡蛋都没碎时,可知 f = 2。
</pre>
<p><strong>示例 2</strong></p>
<pre>
<strong>输入:</strong>n = 100
<strong>输出:</strong>14
<strong>解释:
</strong>一种最优的策略是:
- 将第一枚鸡蛋从 9 楼扔下。如果碎了,那么 f 在 0 和 8 之间。将第二枚从 1 楼扔下,然后每扔一次上一层楼,在 8 次内找到 f 。总操作次数 = 1 + 8 = 9 。
- 如果第一枚鸡蛋没有碎,那么再把第一枚鸡蛋从 22 层扔下。如果碎了,那么 f 在 9 和 21 之间。将第二枚鸡蛋从 10 楼扔下,然后每扔一次上一层楼,在 12 次内找到 f 。总操作次数 = 2 + 12 = 14 。
- 如果第一枚鸡蛋没有再次碎掉,则按照类似的方法从 34, 45, 55, 64, 72, 79, 85, 90, 94, 97, 99 和 100 楼分别扔下第一枚鸡蛋。
不管结果如何,最多需要扔 14 次来确定 f 。
</pre>
<p>&nbsp;</p>
<p><strong>提示:</strong></p>
<ul>
<li><code>1 &lt;= n &lt;= 1000</code></li>
</ul>