You are given two identical eggs and you have access to a building with
n floors labeled from 1 to n.
You know that there exists a floor f where 0 <= f <= n such that any egg dropped at a floor higher than f will break , and any egg dropped
at or below floor f will not break.
In each move, you may take an unbroken egg and drop it from any floor x
(where 1 <= x <= n). If the egg breaks, you can no longer use it. However, if the egg does not break, you may reuse it in future moves.
Return _theminimum number of moves that you need to determine with certainty what the value of _f is.
Input: n =2Output: 2Explanation: We can drop the first egg from floor 1 and the second egg from floor 2.If the first egg breaks, we know that f =0.If the second egg breaks but the first egg didn't, we know that f =1.Otherwise,if both eggs survive, we know that f =2.
Input: n =100Output: 14Explanation: One optimal strategy is:- Drop the 1st egg at floor 9. If it breaks, we know f is between 0 and 8. Drop the 2nd egg starting from floor 1 and going up one at a time to find f within 8 more drops. Total drops is1+8=9.- If the 1st egg does not break, drop the 1st egg again at floor 22. If it breaks, we know f is between 9 and 21. Drop the 2nd egg starting from floor 10 and going up one at a time to find f within 12 more drops. Total drops is2+12=14.- If the 1st egg does not break again, follow a similar process dropping the 1st egg from floors 34,45,55,64,72,79,85,90,94,97,99, and 100.Regardless of the outcome, it takes at most 14 drops to determine f.
With 2 eggs, the optimal strategy is to minimize the worst-case number of moves. If we drop the first egg from increasing floors (x, x-1, x-2, …), we ensure that in the worst case, the total number of drops covers all floors. The minimum number of moves k satisfies k*(k+1)/2 >= n.