LeetCode 面试题 17.16. 按摩师
面试题 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. 按摩师相关推荐
- 面试题 17.16. 按摩师
面试题 17.16. 按摩师 思路:递归只有选和不选两种选择.用数组存储已计算过的值. class Solution { public:int massage(vector<int>&am ...
- 面试题 17.16. 按摩师(简单题)
题目描述: 一个有名的按摩师会收到源源不断的预约请求,每个预约都可以选择接或不接.在每次预约服务之间要有休息时间,因此她不能接受相邻的预约.给定一个预约请求序列,替按摩师找到最优的预约集合(总预约时间 ...
- leetcode 面试题 17.14. 最小K个数 大顶堆 小顶堆 快排
leetcode 面试题 17.14. 最小K个数 [难度:中等] 设计一个算法,找出数组中最小的k个数.以任意顺序返回这k个数均可. 示例: 输入: arr = [1,3,5,7,2,4,6,8], ...
- [leetcode 面试题 17.17] -- 多次搜索,KMP与字典树
[leetcode 面试题 17.17] -- 多次搜索 题目来源 分析 KMP思路 完整代码 字典树 完整代码 题目来源 https://leetcode-cn.com/problems/multi ...
- LeetCode-面试题 17.16:按摩师
一个有名的按摩师会收到源源不断的预约请求,每个预约都可以选择接或不接.在每次预约服务之间要有休息时间,因此她不能接受相邻的预约.给定一个预约请求序列,替按摩师找到最优的预约集合(总预约时间最长),返回 ...
- ⭐算法入门⭐《堆》中等01 —— LeetCode 面试题 17.09. 第 k 个数
文章目录 一.题目 1.题目描述 2.基础框架 3.原题链接 二.解题报告 1.思路分析 2.时间复杂度 3.代码详解 三.本题小知识 四.加群须知 一.题目 1.题目描述 有些数的素因子只有 3 ...
- 程序员面试金典 - 面试题 17.16. 理发师(动态规划DP)
1. 题目 一个有名的理发师会收到源源不断的预约请求,每个预约都可以选择接或不接.在每次预约服务之间要有休息时间,因此她不能接受相邻的预约.给定一个预约请求序列,替理发师找到最优的预约集合(总预约时间 ...
- leetcode —— 面试题 17.12. BiNode
二叉树数据结构TreeNode可用来表示单向链表(其中left置空,right为下一个链表节点).实现一个方法,把二叉搜索树转换为单向链表,要求值的顺序保持不变,转换操作应是原址的,也就是在原始的二叉 ...
- leetcode —— 面试题 17.08. 马戏团人塔
有个马戏团正在设计叠罗汉的表演节目,一个人要站在另一人的肩膀上.出于实际和美观的考虑,在上面的人要比下面的人矮一点且轻一点.已知马戏团每个人的身高和体重,请编写代码计算叠罗汉最多能叠几个人. 示例: ...
最新文章
- Cookie 学习案例之三天免登录
- 小猪的Android入门之路 day 1
- LINUX装魂斗罗游戏,魂斗罗战甲1-支援形态装置搭配思路及攻略
- c语言编程输出数组元素之和,C语言 输出一个数组中,所有元素之和为0的子序列...
- 使用Fiddler对iPhone手机进行数据抓包分析
- python列表用法大全
- 形式的化简与和式的展开
- 单片机0 99c语言程序,单片机C语言程序设计实训99例.doc
- tp6的运行流程+一个完整的tp6请求的流程:
- 如何让excel在两个窗口分开显示
- MES系统是如何解决工厂上的难题的?
- AngularJS 控制器中处理DOM事件
- 00815 计算机基础,国开(山东)00815-计算机应用基础-模块1 windows 7 操作系统——客观题-辅导资料...
- 模糊聚类算法(FCM)
- Java 小数点计算和四舍五入保留两位数
- mybatis-plus QueryWrapper 添加limit
- 网页安全之页面禁用复制粘贴
- Android Studio 连接网易MuMu模拟器教程
- 深蓝学院-机器人运动规划学习笔记-第一章
- 彼得杜拉克 經理人的專業與挑戰 摘錄(上)