面试题 17.16. 按摩师 (动态规划easy)

DP问题,由浅入深,附java解法 我是一个从汽车行业转行IT的项目经理,我是Edward。今天的leetcode每日一题又刷到了DP问题,而且是hard级别的,着实伤脑筋,姑且回顾一下之前遇到的DP问题,温故而知新。 第一次碰到DP问题是经典的买卖股票的最佳时机中的第二题,难度easy: 买卖股票的最佳时机 II 给定一个数组,它的第 i 个元素是一支给定股票第 i 天的价格。 设计一个算法来计算你所能获取的最大利润。你可以尽... 阅读详情

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

在这里插入图片描述

class Solution {
public:
    int massage(vector<int>& nums) {
    	//leetcode老是出这种边界情况,一定要注意。
        if(nums.size()==0){
            return 0;
        }
        if(nums.size()==1){
            return nums[0];
        }
        nums[1]=max(nums[1],nums[0]);
		
		//主要考察状态转移方程的构造,其实是找问题本质的规律
        for(int i =2;i<nums.size();i++){
            nums[i]=max(nums[i-1],nums[i-2]+nums[i]);
        }
        
        //max_element函数返回的是迭代器,所以记得加上*
        return *max_element(nums.begin(),nums.end());
    }
};

在这里插入图片描述
上面是为了简便(偷懒)才这样写,其实新建一个数组dp[],代码更加可读一点。
算了不偷懒了

例如下面:

class Solution {
public:
    int massage(vector<int>& nums) {
        if(nums.size()==0){
            return 0;
        }
        if(nums.size()==1){
            return nums[0];
        }
        vector<int> dp(nums.size(),0);
        dp[0]=nums[0];
        dp[1]=max(nums[1],nums[0]);
        
        for(int i =2;i<nums.size();i++){
            dp[i]=max(dp[i-1],dp[i-2]+nums[i]);
        }
        return *max_element(dp.begin(),dp.end());
    }
};

思路:dp[ i ]作为一个状态,指示从第一天到第i天允许的最大总预约分钟数。dp[ i ]取决于 (截止一天前的预约最大总分钟数 , 截止两天前的预约的最大预约总分钟数+第i天预约分钟数) 的最大值 ,(因为不能连续预约嘛),转换为状态转移方程就是max(dp[i-1],dp[i-2]+nums[i])

动态方程难点在于找出问题本质,构造状态转移方程。

另外,一般来说,边界都是不符合状态转移方程的,手动配置即可。例如该题的dp[0],dp[1]按实际情况手动输入即可。

matlab球面投影(二) matlab球面投影,想做一个全景相机,不知道,要做成啥样,于是在MATLAB先仿真一下,看下是个啥样子 百度别人做的,复制下面的代码到MATLAB的命令串口下,,网上找了张全景图,可以是bmp,jpg,改程序就可以了 回车运行就可以看到结果。 复制下面代码时,下面的中文注释记得删除,MATLAB是会报错的, close all; clear all; clc [x,y,z]=sphere(50); A=imread('a.JPG'); //名字是自己命名的,记得改 B=warp(x,y,-z, 阅读详情

相关推荐

基于AI Agent的数据治理实战:从架构设计到企业级落地

数据治理是确保企业数据质量、一致性与安全性的核心实践,其核心原理在于通过规范、流程与技术工具对数据进行全生命周期管理。传统人工治理模式效率低下且难以规模化,而大语言模型(LLM)与智能体(Agent)技术的发展,为数据治理的自动化与智能化带来了突破。通过将自然语言理解、任务规划与工具调用能力相结合,AI Agent能够将治理规则“代码化”与“智能化”,实现从被动响应到主动发现的模式转变。在应用场景上,AI Agent可扮演智能数据专员角色,自动执行元数据问答、数据质量探查、口径对齐等任务,显著提升数据团队效

weixin_34008805的博客 418

Leetcode算法题:按摩师(动态规划java)

按摩师## 标题 题目描述:一个有名的按摩师会收到源源不断的预约请求,每个预约都可以选择接或不接。在每次预约服务之间要有休息时间,因此她不能接受相邻的预约。给定一个预约请求序列,替按摩师找到最优的预约集合(总预约时间最长),返回总的分钟数。 解题方法:动态规划 解题思路: 第一步 :开一个二维数组dp[n][2] 由于当前这一天有按摩师有两种选择: (1)接预约; (2)不接预约。但根据题意,今天是否接预约,是受到昨天影响的。为了消除这种影响,我们在状态数组要设置这个维度。 dp[i][0] 表示:区间

weixin_45869622的博客 1090

静态时序分析(Static Timing Analysis, STA):简介及内容导航

静态时序分析(简称STA)是用来验证数字设计时序的技术之一,另外一种验证时序的方法是时序仿真,时序仿真可以同时验证功能和时序。“时序分析”这个术语就是用来指代“静态时序分析“或”时序仿真“这两种方法之一,简单来说,时序分析的目的就是为了解决设计中的各种时序问题。STA被称为静态的原因是其对于设计的分析是静态地执行的,并不依赖于施加在输入端口上的激励。相比之下,时序仿真则可以被视作动态地执行对设计的分析,具体过程描述如下:施加一组激励,观察在这组激励下电路行为是否符合要求,然后换一组激。

Starry__的博客 1986

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

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

Sophia_fez的博客 572

手机Camera硬件电路设计:从电源管理到信号完整性的实战解析

本文深入解析了手机Camera硬件电路设计的核心挑战与实战经验,重点聚焦于电源管理与信号完整性两大基石。文章详细阐述了AVDD、DVDD、IOVDD和AFVDD四路电源的差异化设计要点与噪声控制策略,并剖析了MIPI等高速信号通道的完整性设计原则,为硬件工程师提供了从理论到PCB布局布线的完整实战指南。

weixin_28308325的博客 249

InSAR图像配准:从像素级到亚像素级的精度提升策略

本文深入探讨了InSAR图像配准技术,从像素级到亚像素级的精度提升策略。通过分析最大频谱法和相干系数法的适用场景,结合频域补零插值和四叉树分块等高级技术,实现1/8像素级的高精度配准。文章还提供了实用的精度验证方法和常见问题排查指南,为InSAR数据处理提供全面解决方案。

nginx7reverse的博客 835

动态规划----按摩师问题

一个有名的按摩师会收到源源不断的预约请求,每个预约都可以选择接或不接。在每次预约服务之间要有休息时间,因此她不能接受相邻的预约。给定一个预约请求序列,替按摩师找到最优的预约集合(总预约时间最长),返回总的分钟数。分析:通过题意,我们可以得知此问题的本质即为:在数组中,找到一组互不相邻且和最大的值,不难想到动态规划思想,将一种状态可以由另一种状态转变而来。选择 1 号预约和 3 号预约,总时长 = 1 + 3 = 4。

Adepth的博客 397

多IMU车载GNSS/INS数据集及介绍

文章目录前言非常棒的GINS数据集采集轨迹采集时间MEMS IMU详细信息IMU测量值方程及相关误差建模参考噪声参数安装参数文件格式描述 前言 “本文作者感谢武汉大学多源智能导航实验室和牛小骥教授提供了本文所需的GNSS/INS数据集。” 本博文介绍数据集链接为多IMU车载GNSS、INS数据集,欢迎大家下载,由于是开源数据集,因此下载不需要积分 非常棒的GINS数据集 这是一套非常好的用于GNSS/INS组合导航应用的车载数据集,本数据集采集于湖北省武汉市一处工业园区,为开阔天空场景,GNSS R

十八与她的博客 6438

按摩师 | 打家劫舍 | 删除并获得点数 | 动态规划

但是这里有一个问题,第i个位置选还是不选的问题。假设nums = [1 2],如果i为1,这个位置选还是不选?这里的问题在于不能相邻!

qq_63159859的博客 1144

OpenEuler内核编译及替换

一、内核源码下载 在gitee上下载OpenEuler内核源码 下载地址 选择需要的内核版本源码压缩包进行下载 二、内核编译 1.解压缩 将下载好的源码进行解压 tar xvf openeuler-kernel-4.19.90-2107.1.0.tar.gz 2.清理源代码树 解压后得到一个名为kernel的内核源码文件夹,进入后执行命令 make mrproper 清理过去内核编译产生的config,第一次编译时可不执行此命令 3.生成内核配置文件.config 先将将系统原配置文件拷贝过来,原

m0_56602092的博客 2万+

PMP--二模--解题--161-170

A:邀请团队成员在下一次回顾中分享经验。B:请求发起人增加具有所需经验的团队成员。C:在团队内计划知识共享会议。D:请求发起人为团队提供培训课程。A。

stqer的博客 1268

【算法|动态规划No.8】leetcode面试题 17.16. 按摩师

【算法|动态规划No.8】leetcode面试题 17.16. 按摩师

m0_74352571的博客 510

BlockUI专栏目录

BlockUI是一个设计NX对话框的工具,是官方推荐使用的对话框制作方法,能够与NX自身风格相统一,并且在实际开发中经常被使用。BlockUI可以帮助用户快速创建NX对话框,支持多种控件类型,如按钮、文本框、标签等。通过使用BlockUI,用户可以轻松地自定义对话框的布局、样式和交互行为。此外,BlockUI还提供了一些高级功能,如动态更新、条件显示和事件处理等,以帮助用户创建更加复杂和灵活的对话框。本专栏讲述了使用BlockUI制作NX对话框的方法,介绍了每个控件的功能,并且分享一些常用操作的源码。

王牌飞行员_里海的博客 1630

【LeetCode】 面试题 17.16. The Masseuse LCCI 按摩师(Easy)(JAVA)

【LeetCode】 面试题 17.16. The Masseuse LCCI 按摩师(Easy)(JAVA) 题目地址: https://leetcode-cn.com/problems/the-masseuse-lcci/ 题目描述: 一个有名的按摩师会收到源源不断的预约请求,每个预约都可以选择接或不接。在每次预约服务之间要有休息时间,因此她不能接受相邻的预约。给定一个预约请求序列,替按摩师找...

qq_16927853的博客 1242

VC中sqlite的使用

在VC中对sqlite的使用,实现数据库大批数据的快速插入,读取数据库中的数据在ListCtrl中显示

怀旧版电脑GBC模拟器

再现原版GBC掌机的界面,电脑运行连游戏界面都一样大小,很怀旧,很真实,(英文版)强烈推荐,很小的文件,很难才找到的。

11.按摩师(easy)

注意:本题相对原题稍作改动 示例 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。输入: [2,7,9,3,1]​。

doting__的博客 779

visio安装包

Microsoft Office Visio 是一款专业的制图软件。利用经过更新的形状、协作工具和数据链接图表,创建专业级图表以简化复杂的信息。

【动态规划:简单多状态dp问题】按摩师

摘要: 本文介绍了动态规划解决按摩师预约问题的思路。题目要求从预约序列中选择不相邻的预约,使总时间最长。解法使用两个状态数组select和uncheck,分别表示选择或不选择当前预约时的最大时间。状态转移方程为: select[i] = uncheck[i-1] + nums[i] uncheck[i] = max(select[i-1], uncheck[i-1]) 初始化后从左往右填表,最终结果为两个数组末元素的最大值。代码实现简洁,时间复杂度O(n),空间复杂度O(n)。示例验证了算法的正确性。

lirendada的博客 545

SIMATIC S7-1200, S7-1500 PID 控制[手册]

SIMATIC S7-1200, S7-1500 PID 控制[手册]

秋招算法之leetcode动态规划(easy11题)

秋招算法之leetcode动态规划(easy11题) 1.打家劫舍 你是一个专业的小偷,计划偷窃沿街的房屋。每间房内都藏有一定的现金,影响你偷窃的唯一制约因素就是相邻的房屋装有相互连通的防盗系统,如果两间相邻的房屋在同一晚上被小偷闯入,系统会自动报警。 给定一个代表每个房屋存放金额的非负整数数组,计算你 不触动警报装置的情况下 ,一夜之内能够偷窃到的最高金额 class Solution { public int rob(int[] nums) { int len = nums.le

jiohfgj的博客 488

【leetcode】【easy】【每日一题】面试题 17.16. The Masseuse LCCI​​​​​​​

面试题 17.16. The Masseuse LCCI A popular masseuse receives a sequence of back-to-back appointment requests and is debating which ones to accept. She needs a break between appointments and therefore she...

lemonade13的博客 466

leetcode-按摩师

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

JR_Chan的博客 291

DP DFS EASY 2021.11.12

面试题17.16.按摩师 动态规划,关键是列出状态转移表格。 还要想清楚边界值。 2 7 9 3 1 cur 2 7 11 10 12 max 2 7 11 11 12 2 1 4 5 3 1 1 3 cur 2 1 6 6 9 7 10 12 max 2 2 6 6 9 9 10 12 class Solution { public int massage(int[] nums) { if (nums.length == 0){

LittleFish0820 562

LeetCode-打卡题引申出来的dp练习

写在前面 今天的LC打卡虽然是easy,但是用到了dp的思路来解,对于dp思维的练习我觉得很有帮助,再加上很多大佬在题解里面列了不少类似的题目,所以就一并写了并且整理一下。(打家劫舍系列+丑数系列) 面试题 17.16. 按摩师 一个有名的按摩师会收到源源不断的预约请求,每个预约都可以选择接或不接。在每次预约服务之间要有休息时间,因此她不能接受相邻的预约。给定一个预约请求序列,替按摩师找到最优的...

极客不撩妹 598

力扣刷题_动态规划dp

文章目录easy170. 爬楼梯392. 判断子序列746. 使用最小花费爬楼梯剑指 Offer 42. 连续子数组的最大和面试题 16.17. 连续数列面试题 08.01. 三步问题面试题 17.16. 按摩师353. 最大子序和198. 打家劫舍middle62. 不同路径63. 不同路径 IIhard easy 1 70. 爬楼梯 题目链接 难度:简单 1 类型: 动态规划 题目:假设你正在爬楼梯。需要 n 阶你才能到达楼顶。 每次你可以爬 1 或 2 个台阶。你有多少种不同的方法可以爬到楼

Black eyes的博客 663

面试题 17.16. 按摩师 leetcode

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

m0_69901140的博客 595

Leetcode-面试题 17.16. 按摩师

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

何纳博的博客 372

【Leetcode】面试题 17.16. 按摩师问题

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

Chen_programmer的博客 550

面试题17.16. 按摩师

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

j_thame_myhome的博客 412
上一篇: 1002. 查找常用字符
下一篇: 1025. 除数博弈
enjoy_code_
博客等级 码龄7年 1251粉丝 78原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值