[关闭]
@w1024020103 2017-08-21T03:19:20.000000Z 字数 726 阅读 785

Drop Eggs

LeetCode LintCode BinarySearch


讲真 这道题看题目都好久看不懂,加上这两天倒时差,脑袋晕下午狂睡,两天了都没搞懂这道题。
这里给的方法是数学方法,分析什么情况下会有minimium drops,但还没有彻底懂……
Screen Shot 2017-08-20 at 1.00.45 PM.png-41.5kB

submit 1:
Screen Shot 2017-08-20 at 1.12.43 PM.png-196.5kB

submit 2:
Screen Shot 2017-08-20 at 1.26.09 PM.png-203.4kB

AC:
Screen Shot 2017-08-20 at 1.30.11 PM.png-174.3kB

resources:
Screen Shot 2017-08-20 at 2.00.11 PM.png-766.8kB

Egg Dropping
This video helps:
Drop Eggs

Screen Shot 2017-08-20 at 2.53.16 PM.png-226.3kB

Screen Shot 2017-08-20 at 2.53.26 PM.png-183.4kB

看了上面那个文章总算有一些懂了,当有n floors, two eggs的时候,我们先假设minimium drops in worst case is X,然后来确定如何扔的best strategy. 可以想到,要满足扔的总次数等于X, 那么第一次必须在X floors扔,这样的话如果这个egg breaks, 那么我们需要让第二个egg从1st floor依次扔到X - 1 floor. 这样的话,总次数就是1 + (X - 1) = X次;如果这个egg did not break, 我们第二次要在X - 1 floor去扔,因为只有这样才能满足扔的总次数等于X. 如果first egg在X - 1 floor breaks,我们需要将second egg从 X+1, X+2, ... , X+(X-1)-1 floor去扔,总的drops数目就是2 + (X + (X - 1) - 1 - (X + 1) + 1) = X.于是我们可以发现,每次扔floors增加了X, X-1, X-2,...,2,1。我们要保证最后扔到了n floors以上,也就是X+X-1+X-2+...+2+1 >= 100. 而要求minimiun drops, 就取等号,这样算出来根据求根公式可以得到X = (sqrt(8n+1)-1) / 2;
求出来的X就是我们假设的在worst case下的minimium drops.

添加新批注
在作者公开此批注前,只有你和作者可见。
回复批注