面试题 17.16. 按摩师

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

解题方法1 动态规划
1、思路:计数型动态规划

2、算法
(1) 确定状态:f[ i ] 表示第 0~i 个预约的最优的预约集合

  • 最后一步:最优解中最后一个预约的最后一个客户
  • 化成子问题:最后一个预约的最长总预约时间
    f[i] = max(f[i-2]+nums[i],f[i-1])

(2) 转移方程: f[i] = max(f[i-2]+nums[i], f[i-1])
(3) 初始条件: f[0]=nums[0],f[1]=max(nums[0], nums[1])
(4) 计算顺序:f[0],f[1]…f[n-1]

3、java代码

class Solution {public int massage(int[] nums) {//最后一步:最优解中最后一个预约的最后一个客户//子问题:最后一个预约的最长总预约时间f[i]=max(f[i-2]+nums[i],f[i-1])int len = nums.length;if (len == 0) {return 0;}if (len == 1) {return nums[0];}//数组个数:f[0],f[1]…f[n-1]共n个int[] f = new int[len];//初值f[0] = nums[0];f[1] = Math.max(nums[0], nums[1]);//计算顺序:f[2]...f[len]for (int i = 2; i < len; i++) {f[i] = Math.max(f[i - 2] + nums[i], f[i - 1]);}return f[len - 1];}
}

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

  1. 面试题 17.16. 按摩师

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

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

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

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

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

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

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

  5. LeetCode-面试题 17.16:按摩师

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

  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. Cookie 学习案例之三天免登录
  2. 小猪的Android入门之路 day 1
  3. LINUX装魂斗罗游戏,魂斗罗战甲1-支援形态装置搭配思路及攻略
  4. c语言编程输出数组元素之和,C语言 输出一个数组中,所有元素之和为0的子序列...
  5. 使用Fiddler对iPhone手机进行数据抓包分析
  6. python列表用法大全
  7. 形式的化简与和式的展开
  8. 单片机0 99c语言程序,单片机C语言程序设计实训99例.doc
  9. tp6的运行流程+一个完整的tp6请求的流程:
  10. 如何让excel在两个窗口分开显示
  11. MES系统是如何解决工厂上的难题的?
  12. AngularJS 控制器中处理DOM事件
  13. 00815 计算机基础,国开(山东)00815-计算机应用基础-模块1 windows 7 操作系统——客观题-辅导资料...
  14. 模糊聚类算法(FCM)
  15. Java 小数点计算和四舍五入保留两位数
  16. mybatis-plus QueryWrapper 添加limit
  17. 网页安全之页面禁用复制粘贴
  18. Android Studio 连接网易MuMu模拟器教程
  19. 深蓝学院-机器人运动规划学习笔记-第一章
  20. 彼得杜拉克 經理人的專業與挑戰 摘錄(上)

热门文章

  1. 关于最新WP8.1版本提交商店审核流程
  2. 搭建云流媒体存储服务+直播+gb81818+智能摄像头,海康威视,大华,华为,国标推流,RTSP 拉流 srs
  3. mysql8主从配置
  4. 最新MFC抢MBI回馈积分双机方案(有效提升帐号安全)
  5. Emlog后台登录模板分享下载
  6. 《卷积神经网络》LeNet网络结构快速解读
  7. 网站劫持是怎样实现的?
  8. js 点击按钮的防抖
  9. Redis集群搭建加Springboot配置
  10. spring-@AliasFor注解