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

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

示例 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。

方法一:动态规划
思路和算法

class Solution {
public:int massage(vector<int>& nums) {int n = nums.size();int dp0 = 0; //dp0 代表 dp[i][0]int dp1 = nums[0]; //dp1 代表 dp[i][1]for (int i=1; i<n; i++){int current_dp0 = max(dp0, dp1); // 计算 dp[i][0]int current_dp1 = dp0 + nums[i]; // 计算 dp[i][1]dp0 = current_dp0; // 用 dp[i][0] 更新 dp_0dp1 = current_dp1; // 用 dp[i][1] 更新 dp_1}return max(dp0, dp1);}
};

复杂度分析

  1. 时间复杂度:O(n)O(n),其中 nn 为预约的个数。我们有 2n2n 个状态需要计算,每次状态转移需要 O(1)O(1) 的时间,所以一共需要 O(2n)=O(n)O(2n)=O(n) 的时间复杂度。

  2. 空间复杂度:O(1)O(1),只需要常数的空间存放若干变量。

LeetCode-面试题 17.16:按摩师相关推荐

  1. LeetCode 面试题 17.16. 按摩师

    面试题 17.16. 按摩师 题目:一个有名的按摩师会收到源源不断的预约请求,每个预约都可以选择接或不接.在每次预约服务之间要有休息时间,因此她不能接受相邻的预约.给定一个预约请求序列,替按摩师找到最 ...

  2. 面试题 17.16. 按摩师

    面试题 17.16. 按摩师 思路:递归只有选和不选两种选择.用数组存储已计算过的值. class Solution { public:int massage(vector<int>&am ...

  3. 面试题 17.16. 按摩师(简单题)

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

  4. leetcode 面试题 17.14. 最小K个数 大顶堆 小顶堆 快排

    leetcode 面试题 17.14. 最小K个数 [难度:中等] 设计一个算法,找出数组中最小的k个数.以任意顺序返回这k个数均可. 示例: 输入: arr = [1,3,5,7,2,4,6,8], ...

  5. [leetcode 面试题 17.17] -- 多次搜索,KMP与字典树

    [leetcode 面试题 17.17] -- 多次搜索 题目来源 分析 KMP思路 完整代码 字典树 完整代码 题目来源 https://leetcode-cn.com/problems/multi ...

  6. ⭐算法入门⭐《堆》中等01 —— LeetCode 面试题 17.09. 第 k 个数

    文章目录 一.题目 1.题目描述 2.基础框架 3.原题链接 二.解题报告 1.思路分析 2.时间复杂度 3.代码详解 三.本题小知识 四.加群须知 一.题目 1.题目描述   有些数的素因子只有 3 ...

  7. 程序员面试金典 - 面试题 17.16. 理发师(动态规划DP)

    1. 题目 一个有名的理发师会收到源源不断的预约请求,每个预约都可以选择接或不接.在每次预约服务之间要有休息时间,因此她不能接受相邻的预约.给定一个预约请求序列,替理发师找到最优的预约集合(总预约时间 ...

  8. leetcode —— 面试题 17.12. BiNode

    二叉树数据结构TreeNode可用来表示单向链表(其中left置空,right为下一个链表节点).实现一个方法,把二叉搜索树转换为单向链表,要求值的顺序保持不变,转换操作应是原址的,也就是在原始的二叉 ...

  9. leetcode —— 面试题 17.08. 马戏团人塔

    有个马戏团正在设计叠罗汉的表演节目,一个人要站在另一人的肩膀上.出于实际和美观的考虑,在上面的人要比下面的人矮一点且轻一点.已知马戏团每个人的身高和体重,请编写代码计算叠罗汉最多能叠几个人. 示例: ...

最新文章

  1. TMS Scripter importtool的使用
  2. ASA防火墙学习笔记1-基础篇
  3. python开发是做什么的-python开发工程师是做什么的
  4. web页面事件无响应,元素点击不到
  5. SAP的程序用客户端连接正常,用C#连接死活连不上问题的解决
  6. .tex类型文件怎么阅读_Python用于NLP :处理文本和PDF文件
  7. 一篇文章彻底说清JS的深拷贝/浅拷贝
  8. php获得可靠的精准的当前时间 ( 通过授时服务器 )
  9. python编写es脚本_Elasticsearch 参考指南(如何使用脚本)
  10. Effective C# 原则42:使用特性进行简单的反射(译)
  11. 同源时钟/同步时钟/异步时钟/同源时钟之间时序约束/clk group
  12. “食物链”的顶端合约ALOKEX 顺势而行一万年太久只争朝夕
  13. 360插件化Replugin爬坑之路
  14. 毕业设计-基于机器视觉的车型识别系统
  15. jbox弹窗_强大的jquery弹出层插件jBox
  16. 【关键字】ddx ddy 导数函数
  17. grep命令详解(如何匹配多个字符串)(grep指令)(grep -q)
  18. 软件工程Alpha冲刺day6
  19. o7_dictionary_accessibility 参数
  20. mac nginx 非brew安装_Mac 安装 nginx

热门文章

  1. 从零开始了解,群晖的这些备份工具你知道怎么用吗?
  2. 【Unity3D插件】AVPro Video1.x 安卓端所有路径均无法播放
  3. Android UI开发——Material Design界面设计风格
  4. I / O操作详细解析
  5. 嵌入式操作系统--魔幻盒子
  6. ICASSP2023|达摩院语音实验室入选论文全况速览
  7. oracle查询的默认排序,oracle 默认排序及认知
  8. 思博linux视频,源码安装linux软件
  9. 复合函数用Matlab画图,一种快速理解抽象复合函数的作图方式
  10. 利用SLM实现对透镜的仿真