面试题 17.16. 按摩师

按摩师(easy)

题目链接:

面试题 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。

题目解析

这道题目时这样的,我们得到一系列预约,每个预约都要花费一些时间,我们如何选让我们工作的时间更多,毕竟钱比较多吗.不过接收预约是有一定的规则的,例如我们接收了一个预约,那么此时下一个预约我不能接收了,毕竟我要休息.

算法原理

状态表示

按照经验,我们以…为结尾表示状态.

dp[i]:表示以i位置为结尾,我们可以等到更多的时间,不过此时我们需要知道是,在i位置,我们可以选这个预约,也可以不选这个预约.此时我们可以定义两个状态.

f[i]: 表示以i位置为结尾,我们接收i位置的预约,可以等到更多的时间.

g[i]: 表示以i位置为结尾,我们不接收i位置的预约,可以等到更多的时间.

状态转移方程

f[i]: 如果我们想要接收i位置,那么i-1位置不可以接收, f[i] = g[i-1]+v[i]

g[i]: 不接受i位置,那么i-1位置可以接收,也可以不接受 g[i] = max(f[i-1], g[i-1]);

初始化

借助了i-1位置,那么此时我们多加上一个节点,这里需要注意的,我们给f[0] = 0,g[0] = 0.

填表顺序

从左向由填,此时一起填.

返回值

返回f[n]和g[n]的最大值

编写代码

class Solution {
public:int massage(vector<int>& nums) {int n = nums.size();vector<int> f(n+1, 0);vector<int> g(n+1, 0);for(int i = 1; i <= n; i++){f[i] = g[i-1] + nums[i-1];g[i] = max(f[i-1], g[i-1]);}return max(f[n], g[n]);}
};

image-20230907194500922

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

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

冠达管理:股票退市整理期?

近些年来&#xff0c;随着我国股市的发展&#xff0c;股票市场的出资者逐渐增多。但在出资过程中&#xff0c;退市股票的问题也成为了备受重视的论题。那么&#xff0c;股票退市收拾期到底是什么&#xff1f;如何应对退市股票&#xff1f; 首要&#xff0c;什么是股票退市收拾…

【ES】笔记-Class类剖析

Class Class介绍与初体验ES5 通过构造函数实例化对象ES6 通过Class中的constructor实列化对象 Class 静态成员实例对象与函数对象的属性不相通实例对象与函数对象原型上的属性是相通的Class中对于static 标注的对象和方法不属于实列对象&#xff0c;属于类。 ES5构造函数继承Cl…

【LeetCode-中等题】46. 全排列

文章目录 组合并集问题汇总&#xff1a;题目方法一&#xff1a;递归回溯 组合并集问题汇总&#xff1a; 1、子集去重版本 2、组合去重版本 3、子集非去重版本 题目 这题中nums中的数各不相同&#xff0c;所以不需要去重&#xff1a; 而下面这题&#xff0c;nums中的数会存在重…

javaee spring 测试aop 切面

切面类 package com.test.advice;import org.aspectj.lang.ProceedingJoinPoint;//增强类 public class MyAdvice {//将这个增强方法切入到service层的add方法前public void before(){System.out.println("添加用户之前");}}目标类 package com.test.service;publi…

【脑机接口】基于运动想象的康复指导在脑卒中偏瘫患者中的应用

【摘要】 目的 探讨运动想象康复指导对脑卒中偏瘫患者的康复效果及意义。 方法 将 60例脑卒中偏瘫患者随机分为观察组(n31)和对照组(n29)&#xff0c;对照组的康复训练指导采用讲解示范法&#xff0c;观察组采用运动想象法 。比较两组 患者 的运 动功能 、日常生活 活动能力及 …

【EI会议征稿】第三届机械自动化与电子信息工程国际学术会议(MAEIE 2023)

第三届机械自动化与电子信息工程国际学术会议&#xff08;MAEIE 2023&#xff09; 第三届机械自动化与电子信息工程国际学术会议&#xff08;MAEIE 2023&#xff09;将于2023年12月15-17日在江苏南京举行。本会议通过与业内众多平台、社会各团体协力&#xff0c;聚集机械自动…

RabbitMQ学习笔记

1、什么是MQ&#xff1f; MQ全称message queue&#xff08;消息队列&#xff09;&#xff0c;本质是一个队列&#xff0c;FIFO先进先出&#xff0c;是消息传送过程中保存消息的容器&#xff0c;多 用于分布式系统之间进行通信。 在互联网架构中&#xff0c;MQ是一种非常常见的…

【数据库】MySQL基础知识全解

系列综述&#xff1a; &#x1f49e;目的&#xff1a;本系列是个人整理为了秋招面试的&#xff0c;整理期间苛求每个知识点&#xff0c;平衡理解简易度与深入程度。 &#x1f970;来源&#xff1a;材料主要源于拓跋阿秀、小林coding等大佬博客进行的&#xff0c;每个知识点的修…

一百七十三、Flume——Flume写入HDFS后的诸多小文件问题

一、目的 在用Flume采集Kafka中的数据写入HDFS后&#xff0c;发现写入HDFS的不是每天一个文件&#xff0c;而是一个文件夹&#xff0c;里面有很多小文件&#xff0c;浪费namenode的宝贵资源 二、Flume的配置文件优化&#xff08;参考了其他博文&#xff09; &#xff08;一&a…

c语言初阶指针

目录 何为指针 地址大小 野指针 成因 如何规避 有效性 指针计算 -整数 ​编辑 指针比较运算 指针-指针 ​编辑 数组与指针关系 二级指针 指针数组 应用 何为指针 指针就是指针变量&#xff0c;用来存放内存空间的一个编号&#xff0c;将指针比作我们宾馆的客人&a…

java基础(三)

101.如何让写出去的数据能成功生效? flush()刷新数据 close()方法是关闭流&#xff0c;关闭包含刷新&#xff0c;关闭后流不可以继续使用了。 102.学会字节流完成文件的复制&#xff08;支持一切的文件&#xff09; public class CopyDemo05 { public static void main(St…

css transition属性

如果想实现一些效果&#xff1a;比如一个div容器宽高拉伸效果&#xff0c;或者一些好看的有过渡的效果可以使用 定义和用法 transition 属性是一个简写属性&#xff0c;用于设置四个过渡属性&#xff1a; transition-property transition-duration transition-timing-func…