题目描述




思路

这是一道dp的题目,我们用dp(i, j)表示在范围[i, j]内确保胜利的最少金额,那么目标就是计算dp(1, n)
假设第一次猜的数字是x且猜错了,那么需要先支付金额x, 然后继续猜。那么就有两种情况:

  1. 当x大于所选的数字, 那么为了确保胜利,还需要支付dp(1, x - 1)
  2. 当x小于所选的数字,那么为了确保胜利,还需要支付do(x + 1, n)
    为了确保任何情况下都能保证胜利,就应该考虑最坏的情况,也就是要取上述两种情况的最大值,即dp(1, n) = x + max(dp(1, x-1), dp(x+1,n))
    为了确保胜利金额最小化,我们要考虑所有x的情况,即
    dp(1, n) = min(x + max(dp(1, x-1), dp(x+1,n))), 其中1 ≤ x ≤ n

代码实现(py3)

class Solution:def getMoneyAmount(self, n: int) -> int:dp = [[0] * (n + 1) for _ in range(n+1)]for i in range(n - 1, 0, -1):for j in range(i + 1, n + 1):min = 0xfffffor k in range(i, j):temp = k + max(dp[i][k-1],dp[k+1][j])if temp < min:min = tempdp[i][j] = minreturn dp[1][n]

时间复杂度:O(n^3)
空间复杂度:O(n^2)

LeetCode-375.猜数字大小相关推荐

  1. leetcode - 375. 猜数字大小 II

    解题思路:这道题目的意思是我告诉你一个n值,然后我会在1到n之间选一个数字,让你来猜我选了哪个数. 我们需要意识到我们在范围 (1, n)中猜数字的时候,需要考虑最坏情况下的代价.也就是说要算每次都猜 ...

  2. LeetCode 375. 猜数字大小 II(DP)

    文章目录 1. 题目 2. 解题 1. 题目 我们正在玩一个猜数游戏,游戏规则如下: 我从 1 到 n 之间选择一个数字,你来猜我选了哪个数字. 每次你猜错了,我都会告诉你,我选的数字比你的大了或者小 ...

  3. Leetcode 375. 猜数字大小 II 解题思路及C++实现

    方法一:递归 解题思路: 设置一个dp数组,dp[i][j] 表示从数字 i 到 j ,保证猜中所选数字所需的最小花费. 在数字 i 到 j 之间进行猜测时,我们选择数字 i < k < ...

  4. LeetCode 375. 猜数字大小 II

    题目大意: https://leetcode-cn.com/problems/guess-number-higher-or-lower-ii 我们正在玩一个猜数游戏,游戏规则如下: 我从 1 到 n ...

  5. 375. 猜数字大小 II

    375. 猜数字大小 II 我们正在玩一个猜数游戏,游戏规则如下: 我从 1 到 n 之间选择一个数字. 你来猜我选了哪个数字. 如果你猜到正确的数字,就会 赢得游戏 . 如果你猜错了,那么我会告诉你 ...

  6. Java实现 LeetCode 374 猜数字大小 II

    375. 猜数字大小 II 我们正在玩一个猜数游戏,游戏规则如下: 我从 1 到 n 之间选择一个数字,你来猜我选了哪个数字. 每次你猜错了,我都会告诉你,我选的数字比你的大了或者小了. 然而,当你猜 ...

  7. [Golang]力扣Leetcode - 374. 猜数字大小(二分查找)

    [Golang]力扣Leetcode - 374. 猜数字大小(二分查找) 题目:猜数字游戏的规则如下: 每轮游戏,我都会从 1 到 n 随机选择一个数字. 请你猜选出的是哪个数字. 如果你猜错了,我 ...

  8. LeetCode:374. 猜数字大小

    374. 猜数字大小 猜数字游戏的规则如下: 每轮游戏,我都会从 1 到 n 随机选择一个数字. 请你猜选出的是哪个数字. 如果你猜错了,我会告诉你,你猜测的数字比我选出的数字是大了还是小了. 你可以 ...

  9. Java实现 LeetCode 374 猜数字大小

    374. 猜数字大小 我们正在玩一个猜数字游戏. 游戏规则如下: 我从 1 到 n 选择一个数字. 你需要猜我选择了哪个数字. 每次你猜错了,我会告诉你这个数字是大了还是小了. 你调用一个预先定义好的 ...

  10. LeetCode 374. 猜数字大小(二分查找)

    1. 题目 我们正在玩一个猜数字游戏. 游戏规则如下: 我从 1 到 n 选择一个数字. 你需要猜我选择了哪个数字. 每次你猜错了,我会告诉你这个数字是大了还是小了. 你调用一个预先定义好的接口 gu ...

最新文章

  1. 普通域账号客户端计算无关机选项
  2. 数据集轻松按需搜索,这个工具汇集近2000个图像数据集,可免费获取|Reddit高热...
  3. 拆分字符串的表值函数
  4. [转载]hadoop集群默认配置和常用配置
  5. 2020年全球十大数据中心趋势
  6. Android 如何实现带滚动条的TextView,在更新文字时自动滚动到最后一行
  7. 『ACM C++』 PTA 天梯赛练习集L1 | 016-017
  8. 如何检查CentOS服务器受到DDOS攻击
  9. nutsdb与mysql_分享下 nutsdb 单机 1 亿、10 亿数据实测
  10. memset函数的使用
  11. C# WinForm ListView控件用法详解
  12. 《Java疯狂讲义》重点及相关信息 第一章
  13. java jpa是什么_什么是JPA?
  14. 推荐9款便签云生成工具
  15. 人脸对齐之SDM论文解析
  16. ye读春秋左传系列视频讲解
  17. 巴黎出差及场测攻略V1.3
  18. 幂级数求和函数总结全在这里啦
  19. acer 4750 Fn+亮度键(左右方向键亮度调节)无效问题的解决办法
  20. 黑马程序员Java零基础视频教程笔记-方法

热门文章

  1. oracle11如何生成aw r,(Oracle)自定义调用AWRamp;ADDM
  2. 小波包变换/能量特征提取/结果图绘制-python代码
  3. 联通光纤宽带默认无法用ftp连接服务器,这样可以设置解决
  4. 中国医科大学2021年12月《护理中的人际沟通学》作业考核试题
  5. 数据结构和算法——用动态规划求解最短路径问题
  6. Python习题解答:将学生的各科考试成绩保存为csv文件格式
  7. 有不有比加密更强的加密呢,有.拼音加密
  8. python导出依赖包
  9. Hi3516内核编译
  10. 海思USB2.0、USB3.0 Device UVC规格热插拔会不识别