力扣(LeetCode)375. 猜数字大小 II(2023.01.08)

news2024/10/5 17:19:28

我们正在玩一个猜数游戏,游戏规则如下:

我从 1 到 n 之间选择一个数字。
你来猜我选了哪个数字。
如果你猜到正确的数字,就会 赢得游戏 。
如果你猜错了,那么我会告诉你,我选的数字比你的 更大或者更小 ,并且你需要继续猜数。
每当你猜了数字 x 并且猜错了的时候,你需要支付金额为 x 的现金。如果你花光了钱,就会 输掉游戏 。
给你一个特定的数字 n ,返回能够 确保你获胜 的最小现金数,不管我选择那个数字 。

示例 1:
在这里插入图片描述

输入:n = 10
输出:16
解释:制胜策略如下:

  • 数字范围是 [1,10] 。你先猜测数字为 7 。
    - 如果这是我选中的数字,你的总费用为 $0 。否则,你需要支付 $7 。
    - 如果我的数字更大,则下一步需要猜测的数字范围是 [8,10] 。你可以猜测数字为 9 。
    - 如果这是我选中的数字,你的总费用为 $7 。否则,你需要支付 $9 。
    - 如果我的数字更大,那么这个数字一定是 10 。你猜测数字为 10 并赢得游戏,总费用为 $7 + $9 = $16 。
    - 如果我的数字更小,那么这个数字一定是 8 。你猜测数字为 8 并赢得游戏,总费用为 $7 + $9 = $16 。
    - 如果我的数字更小,则下一步需要猜测的数字范围是 [1,6] 。你可以猜测数字为 3 。
    - 如果这是我选中的数字,你的总费用为 $7 。否则,你需要支付 $3 。
    - 如果我的数字更大,则下一步需要猜测的数字范围是 [4,6] 。你可以猜测数字为 5 。
    - 如果这是我选中的数字,你的总费用为 $7 + $3 = $10 。否则,你需要支付 $5 。
    - 如果我的数字更大,那么这个数字一定是 6 。你猜测数字为 6 并赢得游戏,总费用为 $7 + $3 + $5 = $15 。
    - 如果我的数字更小,那么这个数字一定是 4 。你猜测数字为 4 并赢得游戏,总费用为 $7 + $3 + $5 = $15 。
    - 如果我的数字更小,则下一步需要猜测的数字范围是 [1,2] 。你可以猜测数字为 1 。
    - 如果这是我选中的数字,你的总费用为 $7 + $3 = $10 。否则,你需要支付 $1 。
    - 如果我的数字更大,那么这个数字一定是 2 。你猜测数字为 2 并赢得游戏,总费用为 $7 + $3 + $1 = $11 。
    在最糟糕的情况下,你需要支付 $16 。因此,你只需要 $16 就可以确保自己赢得游戏。

示例 2:

输入:n = 1
输出:0
解释:只有一个可能的数字,所以你可以直接猜 1 并赢得游戏,无需支付任何费用。
示例 3:

输入:n = 2

输出:1
解释:有两个可能的数字 1 和 2 。

  • 你可以先猜 1 。
    - 如果这是我选中的数字,你的总费用为 $0 。否则,你需要支付 $1 。
    - 如果我的数字更大,那么这个数字一定是 2 。你猜测数字为 2 并赢得游戏,总费用为 $1 。
    最糟糕的情况下,你需要支付 $1 。

提示:

1 <= n <= 200

来源:力扣(LeetCode)
链接:https://leetcode.cn/problems/guess-number-higher-or-lower-ii

方法一:动态规划

C++提交内容:

class Solution {
public:
    int getMoneyAmount(int n) {
        vector<vector<int>> f(n+1,vector<int>(n+1));
        for (int i = n - 1; i >= 1; i--) {
            for (int j = i + 1; j <= n; j++) {
                f[i][j] = j + f[i][j - 1];
                for (int k = i; k < j; k++) {
                    f[i][j] = min(f[i][j], k + max(f[i][k - 1], f[k + 1][j]));
                }
            }
        }
        return f[1][n];
    }
};

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/149752.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

接口测试——postman和Jemter

接口测试——postman和Jemterpostmanpostman工作原理postman入门postman的基础用法postman的高级用法使用postman管理测试用例批量执行测试用例postman断言环境变量和全局变量postman关联postman请求前置脚本postman参数化及生成测试报告参数化与数据驱动postman生成测试报告je…

(十五)内部类简述

目录 1.概述: 2.内部类之一:静态内部类 3.内部类之二:成员内部类 4.内部类之三:局部内部类 5.内部类之四:匿名内部类 1.概述: 内部类就是定义在一个类里面的类&#xff0c;里面的类可以理解成(寄生)。 2.内部类的使用场景、作用&#xff1a; ①当一个事务的内部&#xff0c;还…

GIT zip下载和clone下载的代码不一致?

问题场景 今天我在下载公司项目的时候遇到了一个问题&#xff0c;我选择了一个分支a&#xff0c;通过下载zip的代码发现是全的&#xff0c;而我通过clone的时候发现显示的是master上的代码 原因 其实是clone下载下来了&#xff0c;但是我idea中分支打开时默认选择的是master分支…

Compose 动画入门 (二) : 为什么animateDpAsState要用val ? MutableState和State有什么区别 ?

1. 前言 我们首先来实现一个Compose的动画(animateDpAsState) var big by remember {mutableStateOf(false) } val size by animateDpAsState(if (big) 100.dp else 50.dp)Box(Modifier.size(size).background(Color.Blue).clickable {big !big}) {}运行程序&#xff0c;来看…

第56篇-利用JSRpc分析某尾波的登录参数【2023-01-09】

声明:该专栏涉及的所有案例均为学习使用,严禁用于商业用途和非法用途,否则由此产生的一切后果均与作者无关!如有侵权,请私信联系本人删帖! 文章目录 一、前言二、JsRpc的基本使用1.准备工作2.简单使用三、利用JSRpc分析尾波的登录参数1.网站分析2.构建rpc一、前言 以前使…

LabVIEW控制前面板对象

LabVIEW控制前面板对象控件引用句柄在引用句柄和经典引用句柄选板上&#xff0c;它可将前面板对象的引用传输给其它VI。右键单击前面板对象&#xff0c;从快捷菜单中选择创建引用&#xff0c;可建立一个VI服务器引用。而且&#xff0c;也可在程序框图上的VI服务器常量中找到前面…

2023年01月IDE流行度最新排名

点击查看最新IDE流行度最新排名&#xff08;每月更新&#xff09; 2023年01月IDE流行度最新排名 顶级IDE排名是通过分析在谷歌上搜索IDE下载页面的频率而创建的 一个IDE被搜索的次数越多&#xff0c;这个IDE就被认为越受欢迎。原始数据来自谷歌Trends 如果您相信集体智慧&am…

高性能分布式缓存Redis-第一篇章

高性能分布式缓存Redis-第一篇章一、缓存发展史&缓存分类1.1、大型网站中缓存的使用1.2、常见缓存的分类1.3、分布式缓存选型方案对比二、Redis概述&安装配置2.1、概述2.2、安装&配置三、数据类型选择&应用场景3.1、Redis的Key的设计规范3.1.1、key名设计3.1.2…

Linux中常用命令(初学整理附实例和自己的理解)

目录 00.tree命令 01. ls 指令 02. pwd命令 03. cd 指令 04. touch指令 05.mkdir指令 06.rmdir指令 && rm 指令 07.man指令 08.热键tab键 09.nano 10.stat 11.cp指令 12.mv指令 13. cat 14.more指令 15.less指令 16.head指令 17.tail指令 18.wc 19.echo 20.…

运营商云从ATH虎口夺食?

配图来自Canva可画 如今在云计算领域&#xff0c;国内市场与国际市场的分化越来越显著&#xff0c;国内市场也在走出与国际市场不同的路径&#xff0c;而其中最大的变量则是来自三大运营商的进场与冲击。 以天翼云、联通云以及移动云为代表&#xff0c;国内通讯运营商的云品牌…

挑战杯课外学术参赛作品—AI合约问卷调查系统

大学生课外学术科技作品竞赛 1.作品概述 1.1作品选题背景和意义 随着互联网技术的发展以及大数据、人工智能等新科技时代的来临&#xff0c;我国高校教育改革、高校人才培养也面临着新的机遇与挑战。一方面&#xff0c;为了实现国家战略、支撑快速发展的新经济&#xff0c;需…

这是一个基于Threejs的商品VR展示系统的 VR模型展示Demo

vr-cake-demo 这是一个基于Threejs的商品VR展示系统的 VR模型展示Demo Demo界面示意图 Demo蛋糕实物图片 Demo蛋糕VR效果图 研究意义 2020年&#xff0c;已经进入了5G时代&#xff0c;许许多多的行业都得开启了高速发展模式&#xff0c;自动驾驶行业&#xff0c;人工智能行业…

硬核实力!企企通荣获“千峰奖·2022年度产业互联网百强”

12月28日&#xff0c;由亿邦动力主办的首届“亿邦跨境产业互联网峰会暨2022年度千峰奖颁奖盛典”在武汉举办&#xff0c;大会现场揭晓了本年度千峰奖获奖企业名单。企企通作为采购供应链领导者&#xff0c;凭借在采购数字化领域的创新引领和硬核实力&#xff0c;荣获“千峰奖20…

Webpack实现多页面打包

1. 多页面应用(MPA)概念 单页面在开发时会把所有的业务放在一个大的入口里面去&#xff0c;不同的子业务还是同一个URL地址&#xff0c;只不过后面的hash会有所不同。 多页面相对于单页面的区别在于&#xff0c;项目发布上线以后&#xff0c;有多个入口文件&#xff0c;每一次…

排障定位时间缩短一半以上, 博睿数据如何赋能青岛住房公积金管理中心

*本文源自快科技&#xff0c;原文链接&#xff1a; https://news.mydrivers.com/1/882/882428.htm 近日&#xff0c;青岛公积金发布关于住房公积金的两则新政&#xff0c;惠及历史高商贷利率人群与多子女家庭。同时&#xff0c;为了让更广泛的人民群众享有到更加优质的公积金…

类加载器子系统

一、内存结构概述 通过类加载子系统将Class字节码文件加载到内存中 更细致的结构图&#xff1a; 二、类加载器与类的加载过程 2.1、类加载过程 通过一个类的全限定名获取定义此类的二进制字节流将这个字节流所代表的静态存储结构转化为方法区的运行时数据结构在内存中生成一个…

大米CMS_V5.5.3 SQL注入漏洞分析

0x00 环境准备 大米CMS官网&#xff1a;http://www.damicms.com 网站源码版本&#xff1a;大米CMS_V5.5.3试用版(更新时间&#xff1a;2017-04-15) 程序源码下载&#xff1a;http://www.damicms.com/downes/dami.rar 测试网站首页&#xff1a; 0x01 代码分析 1、首先来看…

【Qt】QtCreator新建QtWidgetsApplication

【Qt】QtCreator新建QtWidgetsApplication1、背景2、新建项目3、项目文件4、编译说明1、背景 操作系统&#xff1a;windows10专业版。 Qt版本&#xff1a;qt-opensource-windows-x86-msvc2013_64-5.7.1.exe 注意&#xff1a;安装了该exe可执行文件&#xff0c;就自动安装了qtc…

【openGauss实战3】基本概念及语法

&#x1f4e2;&#x1f4e2;&#x1f4e2;&#x1f4e3;&#x1f4e3;&#x1f4e3; 哈喽&#xff01;大家好&#xff0c;我是【IT邦德】&#xff0c;江湖人称jeames007&#xff0c;10余年DBA工作经验 一位上进心十足的【大数据领域博主】&#xff01;&#x1f61c;&#x1f61…

创建Vuex时没有$store的解决

为什么会出现这个问题呢&#xff1f;就是因为你的vuex安装的版本是最新版本 vue3版本对应的是 vue2 vue4版本对应的是 vue3 如果你在vue2项目中&#xff0c;所有的配置好了&#xff0c;组件中就是没有$store属性&#xff0c;那么很有可能是安装的vuex插件版本过高 store…