【LeetCode每日一题】——面试题17.16.按摩师

news/2024/5/5 13:31:10/文章来源:https://blog.csdn.net/IronmanJay/article/details/126967076

文章目录

  • 一【题目类别】
  • 二【题目难度】
  • 三【题目编号】
  • 四【题目描述】
  • 五【题目示例】
  • 六【解题思路】
  • 八【时间频度】
  • 九【代码实现】
  • 十【提交结果】

一【题目类别】

  • 动态规划

二【题目难度】

  • 简单

三【题目编号】

  • 面试题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] = max(dp[i - 2] + nums[i], dp[i - 1])
  • 最后返回最后一个结果即可

八【时间频度】

  • 时间复杂度:O(n)O(n)O(n),其中 nnn 是数组大小
  • 空间复杂度:O(n)O(n)O(n),其中 nnn 是数组大小

九【代码实现】

  1. Java语言版
package DynamicProgramming;public class I1716_TheMasseuseLcci {public static void main(String[] args) {int[] nums = {1, 2, 3, 1};int res = massage(nums);System.out.println("res = " + res);}public static int massage(int[] nums) {int len = nums.length;if (len == 0) {return 0;}if (len == 1) {return nums[0];}int[] dp = new int[len];dp[0] = nums[0];dp[1] = Math.max(nums[0], nums[1]);for (int i = 2; i < len; i++) {dp[i] = Math.max(dp[i - 1], dp[i - 2] + nums[i]);}return dp[len - 1];}}
  1. C语言版
#include<stdio.h>
#include<stdlib.h>#define max(a,b) ((a)>(b)?(a):(b))int massage(int* nums, int numsSize)
{if (numsSize == 0){return 0;}if (numsSize == 1){return nums[0];}int* dp = (int*)malloc(sizeof(int) * numsSize);dp[0] = nums[0];dp[1] = max(nums[0], nums[1]);for (int i = 2; i < numsSize; i++){dp[i] = max(dp[i - 2] + nums[i], dp[i - 1]);}return dp[numsSize - 1];
}/*主函数省略*/

十【提交结果】

  1. Java语言版
    在这里插入图片描述

  2. C语言版
    在这里插入图片描述

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

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

相关文章

App移动端测试(10)—— Monkey自定义脚本案例

01、前言 Monkey自定义脚本案例&#xff1a;QQ的操作 02、Monkey API LaunchActivity(pkg_name, cl_name)启动应用的Activity。参数&#xff1a;包名和启动的 Tap(x, y, tapDuration)模拟一次手指单击事件。参数&#xff1a;x,y为控件坐标&#xff0c;tapDuration为点击的持续…

你到底是前端人还是搬砖人?推荐一款国产摸鱼神器!

☀️ 前言 大家好我是小卢&#xff0c;前几天在群里见到有群友抱怨一周内要完成这么一个大概20&#xff5e;30页的小程序。 群友: 这20多个页面一个星期让我开发完&#xff0c;我是不相信&#x1f62e;‍&#x1f4a8;。群友1: 跑吧&#xff0c;这公司留着没用了&#xff0c;不…

【Python 技能树共建】Beautiful Soup

Beautiful Soup 模块是什么 初学 Python 爬虫&#xff0c;十之八九你采集的目标是网页&#xff0c;因此快速定位到网页内容&#xff0c;就成为你面临的第一道障碍&#xff0c;本篇博客就为你详细说明最易上手的网页元素定位术&#xff0c;学完就会系列。 本文核心使用到的是 …

Spring Security 中的RBAC角色和权限

在这篇文章中&#xff0c;我们将看看使用 Spring boot的R ole B ased A ccess Control ( RBAC )。 了解 RBAC 在 RBAC 模型中存在三个关键实体。他们是&#xff0c; 用户或主题 ——执行操作的系统参与者。它可以代表一个自然人、一个自动帐户&#xff0c;甚至是另一个应用程…

专业思维导图软件 Mindjet MindManager 2021下载

Mindjet MindManager 2021 是一款专业的思维导图软件&#xff0c;美国Mindjet公司开发&#xff0c;一款视觉工作管理的思维导图软件&#xff0c;界面友好功能强大&#xff0c;头脑风暴、会议管理及项目管理工具帮您轻松创建思维导图&#xff0c;有序组织思维、资源和项目进程。…

win10+cuda+cudnn+anconda+pytorch+pycharm全家桶安装

1、下载安装cuda&#xff1a; 网址&#xff1a;CUDA Toolkit 11.7 Update 1 Downloads | NVIDIA Developer 网址下方可以找到以前版本 安装完后&#xff0c;可以在命令行窗口输入nvcc --version查看cuda版本是否正确 显卡驱动版本与cuda版本对应关系&#xff1a; 2、安装cud…

操作系统实验四 进程间通信

★观前提示&#xff1a;本篇内容为操作系统实验内容&#xff0c;代码等内容经测试没有问题&#xff0c;但是可能会不符合每个人实验的要求&#xff0c;因此以下内容建议仅做思路参考。 目录一、实验目的二、实验内容三、具体实现四、实验总结一、实验目的 多道程序设计中&…

【前端面试】-- 必知必会的promise题

Promise 想必大家都十分熟悉&#xff0c;想想就那么几个 api&#xff0c;可是你真的了解 Promise 吗&#xff1f; 请迎接测试: 以下 promise 均指代 Promise 实例&#xff0c;环境是 Node.js 题目一&#xff1a; const promise new Promise((resolve, reject) > {conso…

ES8JC-ASEMI快恢复二极管ES8JC

编辑:ll ES8JC-ASEMI快恢复二极管ES8JC 型号:ES8JC 品牌:ASEMI 封装:SMC 特性:快恢复二极管 正向电流:8A 反向耐压:600V 恢复时间:35ns 引脚数量:2 芯片个数:1 芯片尺寸:84MIL 浪涌电流:125A 漏电流:<5ua 工作温度:-40℃~150℃ 包装方式:30/管;3000/箱 备受…

华为云各Region网络延迟实测

一、测试综述 测试内容&#xff1a; 序号 评测内容 测试日期 1 华为云各大区公网接入网络延迟 2022-09-20 2 华为云各大区之间网络延迟&#xff08;通过公网&#xff09; 2022-09-20 3 华为云各大区之间网络延迟&#xff08;通过云连接&#xff09; 2022-09-20 测…

【Linux】聊聊删文件的那些破事

聊聊删文件的那些破事前言正文rm命令find命令perl方式10w文件删除对比50w文件删除对比100w文件删除对比结语前言 在操作系统的日常运维中&#xff0c;我们经常会做文件的创建、删除、修改操作&#xff0c;尤其是删除&#xff0c;无论是定期清理日志文件&#xff0c;还是做完一…

传统光流方法汇总

又搬运了一个3d视觉相关的~~ 还是先道歉 就是学习用 还是公交上回家看那种 ~~ 这次分享传统光流方法汇总及其在深度学习中的应用&#xff01;&#xff08;基于相位/能量/匹配/变分&#xff09; 回望传统光流估计方法 近年来&#xff0c;随着深度学习技术的快速发展&#xff…

嵌入式分享合集63

一、PCB为什么一定要做阻抗 在具有电阻、电感和电容的电路里&#xff0c;对交流电所起的阻碍作用叫做阻抗。阻抗常用Z表示&#xff0c;是一个复数&#xff0c;实部称为电阻&#xff0c;虚部称为电抗。 其中电容在电路中对交流电所起的阻碍作用称为容抗&#xff0c;电感在电路…

Pr:多机位编辑

很多时候一个机位满足不了影视创作的需求。比如拍摄人物动作&#xff0c;如果能使远景、近景、特写等一些镜头相互衔接&#xff0c;将会使得角色显得更加丰富饱满。不同的景别传达着不同的信息&#xff0c;更容易交待环境和表达角色的情绪。早期人们在拍摄的同时完成多机位切换…

应用层 HTTP 代理服务器转发消息时的相关头部 请求头 X-Forwarded-For

在http消息传递过程当中会经过很多正向代理服务器和反向代理服务器&#xff0c;这些代理服务器在转发消息的时候会涉及到http的头部&#xff0c;下面将会介绍这些头部&#xff0c;包括由于存在这些代理服务器所以客户端和源服务器之前有许多的tcp连接&#xff0c;有一些http头部…

Flutter快学快用15 服务通信:Flutter 中常见的网络协议

上一课时之前&#xff0c;我们的接口都是在代码中模拟假数据&#xff0c;并没有从服务端获取数据&#xff0c;但是在实际开发中&#xff0c;必须与服务端进行交互。本课时主要介绍在 Flutter 中常见的网络传输协议序列化方式&#xff0c;并对其中比较常用的协议进行简单实践&am…

大数据培训技术phoenix表操作

phoenix表操作 1 显示所有表 &#xff01;table 或 &#xff01;tables 2 创建表 CREATE TABLE IF NOT EXISTS us_population ( State CHAR(2) NOT NULL, City VARCHAR NOT NULL, Population BIGINT CONSTRAINT my_pk PRIMARY KEY (state, city)); 如下显示&#xff1a; 在p…

超级基础篇_疑惑实验

1、多态&#xff1a; 多态是什么&#xff1f; 多态是同一个行为具有多个不同表现形式或形态的能力。 多态就是同一个接口&#xff0c;使用不同的实例而执行不同操作多态的优点 1.消除类型之间的耦合关系 2. 可替换性 3. 可扩充性 …

树的应用 —— 二叉树:二叉树的性质

树的应用 —— 二叉树 二叉树&#xff08;Binary Tree&#xff09;是n &#xff08;n ≥0&#xff09;个节点构成的集合&#xff0c;或为空树&#xff08;n 0&#xff09;&#xff0c;或为非空树。 对于非空树T &#xff0c;要满足&#xff1a; ①有且仅有一个被称为根的节点…

FFmpeg入门详解之20:视频编码原理简介

视频为何需要压缩&#xff1f; 原因&#xff1a;未经压缩的数字视频的数据量巨大 ● 存储困难 ○ 一G只能存储几秒钟的未压缩数字视频。 ● 传输困难 ○ 1兆的带宽传输一秒的数字电视视频需要大约4分钟。 主要压缩了什么东西&#xff1f; 原始视频压缩的目的是去除冗余信息&a…