Skip to content

Navigation Menu

Sign in
Appearance settings

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Sign up
Appearance settings

Commit 0cf1388

Browse files
Update 887.super-egg-drop.md
1 parent c46e736 commit 0cf1388

File tree

1 file changed

+7
-5
lines changed

1 file changed

+7
-5
lines changed

‎problems/887.super-egg-drop.md

Lines changed: 7 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -195,16 +195,18 @@ class Solution:
195195
- ...
196196
- "f 函数啊 f 函数,我扔 m 次呢?", 也就是判断 f(k, m) >= N 的返回值
197197

198-
我们只需要返回第一个返回值为 true 的 m 即可。
198+
我们只需要返回第一个返回值为 true 的 m 即可。由于 m 不会大于 N,因此时间复杂度也相对可控。这么做的好处就是不用思考从哪里开始扔,扔完之后下一次从哪里扔。
199199

200200
对于这种二段性的题目应该想到二分法,如果你没想起来,请先观看我的仓库里的二分专题哦。实际上不二分也完全可以通过此题目,具体下方代码,有实现带二分的和不带二分的。
201201

202-
最后剩下一个问题。这个神奇的 f 函数怎么实现呢?其实很简单。
202+
最后剩下一个问题。这个神奇的 f 函数怎么实现呢?
203203

204-
- 摔碎的情况,可以检测的最高楼层是`f(m - 1, k - 1) + 1`。因为碎了嘛,我们多检测了摔碎的这一层。
205-
- 没有摔碎的情况,可以检测的最高楼层是`f(m - 1, k)`因为没有碎,也就是说我们啥都没检测出来(对能检测的最高楼层无贡献)。
204+
- 摔碎的情况,可以检测的最大楼层数是`f(m - 1, k - 1)`。也就是说,接下来我们需要往下找,最多可以找 f(m-1, k-1) 层
205+
- 没有摔碎的情况,可以检测的最大楼层数是`f(m - 1, k)`也就是说,接下来我们需要往上找,最多可以找 f(m-1, k) 层
206206

207-
能检测的最高楼层就是两者的和,我们来看下二分代码:
207+
也就是当前扔的位置上面可以有 f(m-1, k) 层,下面可以有 f(m-1, k-1) 层,这样无论鸡蛋碎不碎,我对可以检测出来。因此能检测的最大楼层数就是**向上找的最大楼层数+向下找的最大楼层数+1**,其中 1 表示当前层,即 `f(m - 1, k - 1) + f(m - 1, k) + 1`
208+
209+
首先我们来看下二分代码:
208210

209211
```py
210212
class Solution:

0 commit comments

Comments
(0)

AltStyle によって変換されたページ (->オリジナル) /