leetcode中等猜数字大小2

Posted qq_40707462

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了leetcode中等猜数字大小2相关的知识,希望对你有一定的参考价值。


思路:动态规划
【确保】猜中的【最小】花费
确保–>max
最小–>min

dp(i, j) 表示在范围 [i, j] 内确保胜利的最少金额,目标是计算
f(1, n)

假设第一次猜的数字是 x 并且猜错,则需要支付金额 x,为了确保胜利还需要支付的金额是 dp(i, x - 1)dp(x + 1, j)。为了【确保】在哪边选都胜利,应考虑最坏情况,取上述两者的最大值:dp(i,j)=x+max(dp(i,x−1),dp(x+1,j))。

为了得到【最小】,在(i,j)之间遍历 x ,选取使得dp[i][j]最小的 x 作为分割点。

class Solution {
    public int getMoneyAmount(int n) {
        int[][]dp=new int[n+1][n+1];
        for(int i=n-1;i>=1;i--){
            for(int j=i+1;j<=n;j++){
            //i==j时,dp[i][j]=0;
                dp[i][j]=Integer.MAX_VALUE;
                for(int k=i;k<j;k++){
                    int cur=Math.max(dp[i][k-1],dp[k+1][j])+k;
                    dp[i][j]=Math.min(dp[i][j],cur);
                }
            }
        }
        return dp[1][n];
    }
}

以上是关于leetcode中等猜数字大小2的主要内容,如果未能解决你的问题,请参考以下文章

⭐算法入门⭐《二分枚举》简单12 —— LeetCode 374. 猜数字大小

LeetCode--374--猜数字大小

JS Leetcode 374. 猜数字大小 题解分析

《LeetCode之每日一题》:61.猜数字大小

LeetCode 374 猜数字大小[二分法] HERODING的LeetCode之路

leetcode 374. 猜数字大小(python)