【动态规划-简单】面试题 17.16. 按摩师

面试题 17.16. 按摩师 本题是一个典型的动态规划问题,利用状态转移方程可以有效地计算出最优解。通过优化空间复杂度和代码结构,我们可以在较短的时间内得到最优解。对于这类问题,动态规划是解决此类最优化问题的常见方法,而通过合理地设计状态转移方程,我们可以高效地解决问题。希望本文对你有所帮助!如果有任何问题,欢迎留言讨论! 阅读详情

【题目】
一个有名的按摩师会收到源源不断的预约请求,每个预约都可以选择接或不接。在每次预约服务之间要有休息时间,因此她不能接受相邻的预约。给定一个预约请求序列,替按摩师找到最优的预约集合(总预约时间最长),返回总的分钟数。

注意:本题相对原题稍作改动

示例 1:

输入: [1,2,3,1]
输出: 4
解释: 选择 1 号预约和 3 号预约,总时长 = 1 + 3 = 4。

示例 2:

输入: [2,7,9,3,1]
输出: 12
解释: 选择 1 号预约、 3 号预约和 5 号预约,总时长 = 2 + 9 + 1 = 12。

示例 3:

输入: [2,1,4,5,3,1,1,3]
输出: 12
解释: 选择 1 号预约、 3 号预约、 5 号预约和 8 号预约,总时长 = 2 + 4 + 3 + 3 = 12。

【代码】
【方法1:递归】超时
在这里插入图片描述

class Solution:
    def makeMoney(self,index):
        if index>=len(self.nums):
            return 0
        return max(self.nums[index]+self.makeMoney(index+2),self.makeMoney(index+1))
    def massage(self, nums: List[int]) -> int:
        self.nums=nums
        return self.makeMoney(0)

【方法2:动态规划】
在这里插入图片描述在这里插入图片描述

class Solution:
    def massage(self, nums: List[int]) -> int:
        if not nums:
            return 0
        dp=[0 for i in range(len(nums))]
        dp[0]=nums[0]
        for index in range(1,len(nums)):
            dp[index]=max(dp[:index-1]+[0])+nums[index]
        return max(dp)

【方法3:二维dp】
在这里插入图片描述

class Solution:
    def massage(self, nums: List[int]) -> int:
        if not nums:
            return 0
        dp0=0
        dp1=nums[0]
        for index in range(1,len(nums)):
            dp0,dp1=max(dp0,dp1),nums[index]+dp0
        return max(dp1,dp0)
【动态规划】 LeetCode #面试题17.16. 按摩师(双100%) 题目链接: LeetCode #面试题17.16. 按摩师 题目描述: #面试题 17.16. 按摩师 一个有名的按摩师会收到源源不断的预约请求,每个预约都可以选择接或不接。在每次预约服务之间要有休息时间,因此她不能接受相邻的预约。给定一个预约请求序列,替按摩师找到最优的预约集合(总预约时间最长),返回总的分钟数。 注意:本题相对原题稍作改动 示例 1: 输入: [1,2,3,1] 输出: 4 解释: 选择 1 号预约和 3 号预约,总时长 = 1 + 3 = 4。 示例 2: 输入: [2,7,9,3,1 阅读详情

相关推荐

leetcode 面试题 17.16. 按摩师 python

leetcode 面试题 17.16 按摩师题目描述题解 题目描述 题解 思路:分析题目,主要是要至少隔开一个数,才能相加,然后发现其实和 leetcode 746.题很像,链接:746。 所以借鉴746的思想,同样可以画出和746那样的楼梯图,只不过这里要多加一个s2来存储中间相隔的那一级的值。 和746的区别就是 相隔一级,所以加了一个s2。 上代码 class Solution: def massage(self, nums: List[int]) -> int: if not nums: return 0 if len(

面试题-17.16 按摩师

力扣题目解题思路java代码。

LIUCHANGSHUO的博客 493

virtualbox虚拟机里面最顶部没有控制、设置和帮助等选项

无意中操作,导致virtualbox虚拟机里面最顶部没有控制,设置和帮助选项  virtualbox虚拟机窗口显示如下如: 如何设置,窗口显示如下图所示呢: virtualbox虚拟机窗口模式显示设置,切换可以通过如下图所示操作进行切换: PS:一定要是右边的Ctrl+C

WEL测试 8780

LeetCode刷题(75)~按摩师

题目描述 一个有名的按摩师会收到源源不断的预约请求,每个预约都可以选择接或不接。在每次预约服务之间要有休息时间,因此她不能接受相邻的预约。给定一个预约请求序列,替按摩师找到最优的预约集合(总预约时间最长),返回总的分钟数。 示例 1: 输入: [1,2,3,1] 输出: 4 解释: 选择 1 号预约和 3 号预约,总时长 = 1 + 3 = 4。 示例 2: 输入: [2,7,9,3,1] 输出: 12 解释: 选择 1 号预约、 3 号预约和 5 号预约,总时长 = 2 + 9 + 1 = 12。 示

海到无边天作岸 山登绝顶我为峰 2359

从BIN文件到可烧录程序:深入理解ADI DSP程序读取背后的原理与安全边界

本文深入探讨了ADI DSP程序从BIN文件到可烧录程序的转换原理与安全边界,详细解析了JTAG接口、仿真器工作流程及Flash存储结构。通过Visual DSP++工具,开发者可以理解程序读取的底层机制,同时强调了知识产权保护的重要性,为嵌入式开发提供了实用建议。

weixin_27956639的博客 264

深度探索:非线性随机森林(Nonlinear Random Forest,NL-RF)原理及应用

非线性随机森林(NL-RF)旨在通过结合集成方法与高级技术来捕捉和建模数据中的非线性关系,从而改善传统随机森林在处理复杂非线性数据结构时的表现。

qq_51320133的博客 2067

Leetcode-面试题 17.16. 按摩师

题目: 一个有名的按摩师会收到源源不断的预约请求,每个预约都可以选择接或不接。在每次预约服务之间要有休息时间,因此她不能接受相邻的预约。给定一个预约请求序列,替按摩师找到最优的预约集合(总预约时间最长),返回总的分钟数。 注意:本题相对原题稍作改动 示例 1: 输入: [1,2,3,1] 输出: 4 解释: 选择 1 号预约和 3 号预约,总时长 = 1 + 3 = 4。 示例 2:...

何纳博的博客 372

MATLABGUI读取文件并将路径显示在文本框中

MATLABGUI读取文件并将路径显示在文本框中

m0_50305149的博客 2650

leetcode 198. 打家劫舍(2020.5.29) & 面试题 17.16. 按摩师(2020.3.24)(滚动数组)

【题目】 一个有名的按摩师会收到源源不断的预约请求,每个预约都可以选择接或不接。在每次预约服务之间要有休息时间,因此她不能接受相邻的预约。给定一个预约请求序列,替按摩师找到最优的预约集合(总预约时间最长),返回总的分钟数。 注意:本题相对原题稍作改动 (PS:数组下标表示预约顺序,数组值表示当前预约需要的时长) 示例 1: 输入: [1,2,3,1] 输出: 4 解释: 选择 1 号预约和 3 ...

Sophia_fez的博客 572

2025年华为杯中国研究生数学建模竞赛C题 围岩裂隙精准识别与三维模型重构 思路+代码

report += f"**位置 {i+1}**: ({loc[0]:.1f}, {loc[1]:.1f}, {loc[2]:.1f})\n"# ==================== 高级U-Net模型 ====================# ==================== 数据预处理与增强 ====================# ==================== 采样方法比较分析 ====================

YOLO 1528

高通开发系列 - Camera之摄像头调试记录

记录一些调试内容

fulinux的博客 1218

动态规划-简单多状态dp问题——面试题17.16.按摩师

【代码】动态规划-简单多状态dp问题——面试题17.16.按摩师。

2301_80689220的博客 969

CE电流法测试中的dBμV负值解析

传导发射(CE)电流法测试中出现的dBμV负值现象表明被测设备干扰电平低于1μV参考基准。这源于对数计算特性(小于1μV的电压转换后为负值)、设备优良的EMC设计(如滤波效果显著)及测试环境的影响(LISN隔离、屏蔽室低噪声)。负值虽不代表实际负电压,但反映干扰水平优于标准限值,为系统集成预留电磁裕度。工程应用中需结合设备灵敏度、环境背景噪声等因素综合分析,避免误判,这类数据可用于评估EMI设计冗余度。

硬核科技 298

[动态规划] (十一) 简单多状态 LeetCode 面试题17.16.按摩师 和 198.打家劫舍

[动态规划] (十一) 简单多状态 LeetCode 面试题17.16.按摩师 和 198.打家劫舍

好兄弟起把大狙 557

从 VS Code 创建 ABAP Development Objects,包、命名、传输请求和 Clean Core 的一条线打通

文章摘要: SAP ABAP开发工具正从传统SAP GUI/Eclipse向VS Code迁移,通过ABAP Development Tools扩展实现代码编辑、调试和传输管理。文章重点分析了创建ABAP对象背后的治理逻辑:1)对象创建涉及包结构、命名规范、传输层等关键设计决策;2)VS Code通过命令面板(Ctrl+Shift+P)提供统一创建入口;3)对象类型选择反映架构意图,应从业务模型角度规划;4)Package是重要的治理边界,需按业务能力分区;5)命名和描述需体现业务语义;6)传输请求标记对象

2007 年 ~ 2025 年,深耕 SAP 技术 18 年 177

廖雪峰Python教程[完整版]

廖雪峰的python教程整理的,已经排好版了,而且还是完整的,适合小白

动态规划——LeetCode:每日一题:面试题 17.16. 按摩师————简单(动态规划)

题目: 面试题 17.16. 按摩师 一个有名的按摩师会收到源源不断的预约请求,每个预约都可以选择接或不接。在每次预约服务之间要有休息时间,因此她不能接受相邻的预约。给定一个预约请求序列,替按摩师找到最优的预约集合(总预约时间最长),返回总的分钟数。 注意:本题相对原题稍作改动 示例 1: 输入: [1,2,3,1] 输出: 4 解释: 选择 1 号预约和 3 号预约,总时长 = 1 + 3 = 4。 示例 2: 输入: [2,7,9,3,1] 输出: 12 解释: 选择 1 号预约、 3 号预约和 5

Kinght_123的博客 605

ET2012新版免狗免安装绿色软件

ET2012新版免狗免安祖昂绿色软件。,新界面,新视觉,

【leetcode】面试题 17.16. 按摩师(the-masseuse-lcci)(动态规划)[简单]

链接 https://leetcode-cn.com/problems/the-masseuse-lcci/ 耗时 解题:1 h+ 题解:30 min 题意 一个有名的按摩师会收到源源不断的预约请求,每个预约都可以选择接或不接。但她不接受相邻的预约。给定一个预约请求序列,替按摩师找到最优的预约集合(总预约时间最长),返回总的分钟数。 给定一个数组,每个数都可以选择拿或者不拿,但是相邻的两个数不能同...

Krone_的博客 1147

精雕软件(JDpaint) 5.5 绿色版

精雕软件(JDpaint) 5.5 绿色版精雕软件(JDpaint) 5.5 绿色版精雕软件(JDpaint) 5.5 绿色版

【动态规划】简单多状态 dp 问题

简单多状态 dp 问题

fight_p的博客 2787

LeetCode #面试题17.16 按摩师 动态规划

LeetCode #面试题17.16 按摩师

阿玮的博客 303

Leetcode 面试题 17.16. 按摩师 C语言

Leetcode 面试题 17.16. 按摩师 C语言 问题描述 一个有名的按摩师会收到源源不断的预约请求,每个预约都可以选择接或不接。在每次预约服务之间要有休息时间,因此她不能接受相邻的预约。给定一个预约请求序列,替按摩师找到最优的预约集合(总预约时间最长),返回总的分钟数。 示例一 输入: [1,2,3,1] 输出: 4 解释: 选择 1 号预约和 3 号预约,总时长 = 1 + 3 = 4。...

ninotxdy的博客 601

leetcode 面试题 17.16. 按摩师

leetcode 面试题 17.16. 按摩师 题目描述 一个有名的按摩师会收到源源不断的预约请求,每个预约都可以选择接或不接。在每次预约服务之间要有休息时间,因此她不能接受相邻的预约。给定一个预约请求序列,替按摩师找到最优的预约集合(总预约时间最长),返回总的分钟数。 注意:本题相对原题稍作改动 示例 1: 输入: [1,2,3,1] 输出: 4 解释: 选择 1 号预约和 3 号预约,总时长 ...

qq_41961609的博客 197

面试题 17.16. 按摩师 Golang 双百 动态规划 原地修改

面试题 17.16. 按摩师 一个有名的按摩师会收到源源不断的预约请求,每个预约都可以选择接或不接。在每次预约服务之间要有休息时间,因此她不能接受相邻的预约。给定一个预约请求序列,替按摩师找到最优的预约集合(总预约时间最长),返回总的分钟数。 注意:本题相对原题稍作改动 示例 1: 输入: [1,2,3,1] 输出: 4 解释: 选择 1 号预约和 3 号预约,总时长 = 1 + 3 = 4。 ...

Cyan1956的博客 324

动态规划算法:11.简单多状态 dp 问题_按摩师_C++

我们在状态标识的时候,一般都会创建一个数组dp,也就是我们所说的dp表,我们要做的就是把每一个状态的值填入这个表内,最终这个表内的某一个值可能就是我们要返回的值。越学越深入,动态规划也是熟能生巧,在题目中没有明显给出的时候,我们就要凭借自己做题的经验来确定,所以就需要我们大量的做题。时,我们选择了第一个预约时长,根据状态转移方程中我们求f[0]就需要f[-1],但我们没有f[-1]这个值,这就是越界。由题目我们可知,我们两次选择的预约时间不能相邻,并且题目要求我们最后的结果(预约时长)达到最大。

2302_76267737的博客 1297

LeetCode 面试题 17.16. 按摩师

LeetCode 面试题 17.16. 按摩师 题目描述 一个有名的按摩师会收到源源不断的预约请求,每个预约都可以选择接或不接。在每次预约服务之间要有休息时间,因此她不能接受相邻的预约。给定一个预约请求序列,替按摩师找到最优的预约集合(总预约时间最长),返回总的分钟数。 注意:本题相对原题稍作改动 示例 1: 输入: [1,2,3,1] 输出: 4 解释: 选择 1 号预约和 3 号预约,总时长 = 1 + 3 = 4。 示例 2: 输入: [2,7,9,3,1] 输出: 12 解释: 选择 1

狂吃不胖温同学的博客 202

【面试题 17.16】按摩师 (动态规划)

题目 题目链接 一个有名的按摩师会收到源源不断的预约请求,每个预约都可以选择接或不接。在每次预约服务之间要有休息时间,因此她不能接受相邻的预约。给定一个预约请求序列,替按摩师找到最优的预约集合(总预约时间最长),返回总的分钟数。 注意:本题相对原题稍作改动 示例 1: 输入: [1,2,3,1] 输出: 4 解释: 选择 1 号预约和 3 号预约,总时长 = 1 + 3 = 4。 示例 2: 输入: [2,7,9,3,1] 输出: 12 解释: 选择 1 号预约、 3 号预约和 5 号预约,总时长 = 2

WormholeStack 1693
上一篇: 【动态规划-简单】LCS 01. 下载插件(加倍不下载 ,下载不加倍)
下一篇: 【动态规划-简单】剑指 Offer II 003. 前 n 个数字二进制中 1 的个数
菜菜2022
博客等级 码龄9年 67粉丝 1033原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值