思路
动态规划:dp[i]表示i楼f确切的值的最小操作次数,对于上一次选择的楼层共有i-1种可能(上一次从1楼,2楼…扔下),所以需要在i-1中可能中去最小值
解题过程
对于每一种可能,如dp[10]上一次从5楼扔下,那么dp[10]=MAth.max(dp[10-5]+1,5),即(1):5楼扔下碎了,接着检查1楼,2楼…4楼,共五次;(2):5楼扔下没碎,接着检查10楼,即dp[10-5]+1次
Code
class Solution {
public int twoEggDrop(int n) {
int dp[]=new int[n+1];
Arrays.fill(dp,Integer.MAX_VALUE);
dp[0]=0;
for(int i=1;i<=n;i++){
for(int j=1;j<=i;j++){
dp[i]=Math.min(dp[i],Math.max(dp[i-j]+1,j));
}
}
return dp[n];
}
}
作者:菜卷
链接:https://leetcode.cn/problems/egg-drop-with-2-eggs-and-n-floors/solutions/
来源:力扣(LeetCode)
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。