LeetCode每日一题——1235. 规划兼职工作

news2025/1/13 6:00:44

LeetCode每日一题系列

题目:1235. 规划兼职工作
难度:困难


文章目录

  • LeetCode每日一题系列
  • 题目
  • 示例
  • 思路
  • 题解


题目

你打算利用空闲时间来做兼职工作赚些零花钱。

这里有 n 份兼职工作,每份工作预计从 startTime[i] 开始到 endTime[i] 结束,报酬为 profit[i]。

给你一份兼职工作表,包含开始时间 startTime,结束时间 endTime 和预计报酬 profit 三个数组,请你计算并返回可以获得的最大报酬。

注意,时间上出现重叠的 2 份工作不能同时进行。

如果你选择的工作在时间 X 结束,那么你可以立刻进行在时间 X 开始的下一份工作。

示例

示例 1:

在这里插入图片描述

输入:startTime = [1,2,3,3], endTime = [3,4,5,6], profit = [50,10,40,70]
输出:120
解释: 我们选出第 1 份和第 4 份工作, 时间范围是 [1-3]+[3-6],共获得报酬 120 = 50 + 70。

示例 2:

在这里插入图片描述

输入:startTime = [1,2,3,4,6], endTime = [3,5,10,6,9], profit =
[20,20,100,70,60]
输出:150
解释: 我们选择第 1,4,5 份工作。 共获得报酬 150 = 20 + 70 +
60。

示例 3:

在这里插入图片描述

输入:startTime = [1,1,1], endTime = [2,3,4], profit = [5,6,4]
输出:6

提示:

1 <= startTime.length == endTime.length == profit.length <= 5 * 10^4
1 <= startTime[i] < endTime[i] <= 10^9
1 <= profit[i] <= 10^4

思路

动态规划+二分搜索

  • dp数组定义为到某个截止时间所能获得的最大收入,初始值为[[0,0]]
  • 这里先将开始时间、结束时间、和对应的收入合成一个数组,并按照结束时间由小到大排序
  • 遍历排序后的数组,寻找每个开始时间之前的最后一个结束时间dp[i][0],判断该元素的价格加上上一个结束时间的dp[i]][1]是否大于dp[-1][1],如果大于则在dp上添加本元素的结束时间以及最大收入和,如果小于则跳过。

题解

class Solution:
    def jobScheduling(self, startTime: List[int], endTime: List[int], profit: List[int]) -> int:
    	# 组合并排序
        jobs = sorted(zip(startTime, endTime, profit), key=lambda x: x[1])
        # dp数组
        dp = [[0, 0]]
        # 遍历
        for s, e, p in jobs:
        	# 二分查找
            i = bisect.bisect(dp, [s + 1]) - 1
            # 判断是否需要更新结束时间和最大收入
            if dp[i][1] + p > dp[-1][1]:
                dp.append([e, dp[i][1] + p])
        return dp[-1][1]

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

1024程序员节|基于Springboot实现爱心捐赠管理系统

作者主页&#xff1a;编程指南针 作者简介&#xff1a;Java领域优质创作者、CSDN博客专家 、掘金特邀作者、多年架构师设计经验、腾讯课堂常驻讲师 主要内容&#xff1a;Java项目、毕业设计、简历模板、学习资料、面试题库、技术互助 文末获取源码 项目编号&#xff1a;BS-XX-…

Mybatis-plus学习(基于版本3.0.5)

文章目录一.概念1.1 简介1.2 特性二.快速入门三.CRUD扩展3.1 Insert插入3.2 主键生成策略3.3 Update更新3.4 自动填充3.5 乐观锁3.6 查询操作3.7 删除操作3.8 性能分析插件&#xff08;新版本的Mybatis-plus已将此插件移除&#xff09;3.9 条件构造器3.10 代码生成器一.概念 1…

Transformer合集3

太多了 我都累了 这都第4了 这次先是关于他的小样本目标检测 , 用很少的训练示例检测新目标 小样本目标检测 论文地址&#xff1a; https://openaccess.thecvf.com/content/CVPR2022/papers/Han_Few-Shot_Object_Detection_With_Fully_Cross-Transformer_CVPR_2022_paper.…

docker安装influxdb及备份恢复

influxdb安装influxdb1&#xff0c;拉取镜像2&#xff0c;创建目录并进入到目录内3&#xff0c;创建influxdb容器服务4&#xff0c;访问&#xff1a;ip8086备份恢复influxdb数据准备1.1 创建用户&#xff0c;填入组织&#xff0c;桶信息1.2&#xff0c;给桶添加点数据1&#xf…

ansible部署lnmp架构

环境准备&#xff1a; 主机名IP服务系统ansible192.168.160.131ansibleCentOS-8.5nginx192.168.160.132nginxCentOS-8.5mysql192.168.160.137mysqlCentOS-8.5php192.168.160.139phpCentOS-8.5 1、生成私钥&#xff0c;对另外三台主机进行免密登入 [rootansible ~]# ssh-keyge…

【单片机毕业设计】【mcuclub-jj-007】基于单片机的门铃的设计

最近设计了一个项目基于单片机的门铃&#xff0c;与大家分享一下&#xff1a; 一、基本介绍 项目名&#xff1a;门铃 项目编号&#xff1a;mcuclub-jj-007 单片机类型&#xff1a;STC89C52、STM32F103C8T6 具体功能&#xff1a; 1、通过人体热释电检测是否有人&#xff0c;当…

Java --- 创建SpringMVC项目

目录 一、什么是MVC 二、什么是SpringMVC 三、SpringMVC的特点 四、创建SpringMVC项目 4.1、开发环境 4.2、创建maven工程 4.3、配置web.xml文件 4.4、创建请求控制器 4.5、配置springMVC.xml文件 4.5、访问首页面 4.6、访问指定页面 一、什么是MVC MVC是一种软件架…

C++:C++的IO流

while (scanf("%s", buff) ! EOF)如何终止&#xff1f; 答&#xff1a;ctrl z换行 是规定&#xff0c;ctrl c 是发送信号杀死进程&#xff08;一般不建议ctrl c&#xff09;。 int main() {string str;while (cin >> str) // operator>>(cin, str){cou…

K_A01_001 基于单片机驱动WS2812 点灯流水灯 0-9显示

目录 一、资源说明 二、基本参数 三、通信协议说明 WS2812时序: 代码: 四、部分代码说明 1、接线说明 2、主函数 五、相关资料链接 六、数字提取格式 七、视频效果展示与资料获取 八、项目所有材料清单 九、注意事项 十、接线表格 一、资源说明 单片机型号 测试条件 模…

【一起学习数据结构与算法】优先级队列(堆)

目录一、什么是优先级队列&#xff1f;二、堆 (heap&#xff0c;基于二叉树)2.1 什么是堆&#xff1f;2.2 堆的分类2.3 结构与存储三、堆的操作3.1 堆创建3.2 插入元素3.3 弹出元素四、用堆模拟实现优先级队列五、堆的一个重要应用-堆排序六、经典的TOPK问题6.1 排序6.2 堆一、…

如何用两个晚上教女生学会Python

文章目录安装、需求引导和开发模型命令行计算器用温度指导穿衣VS Code 和女孩子的衣柜用遍历来挑选衣物交互课后作业事情的起因是这样的&#xff0c;知乎上有个妹纸加我&#xff0c;说要相亲。尽管我欣喜若狂&#xff0c;但恰巧在外出差&#xff0c;根本走不开。妹纸于是说要不…

自动化和半自动矢量化提取地物矢量轮廓

假期愉快&#xff08;这个假期加班了没&#xff1f;图片&#xff09;&#xff01;今天小助手来分享关于自动化和半自动化的矢量提取&#xff0c;使用的软件都是我们常用的软件。一是使用Global Mapper对遥感影像或矢量底图进行自动提取&#xff0c;二是基于天地图矢量底图使用A…

阶段性总结 | C语言

… &#x1f333;&#x1f332;&#x1f331;本文已收录至&#xff1a;技术之外的往事 更多知识尽在此专栏中&#xff01; &#x1f389;&#x1f389;&#x1f389;欢迎点赞、收藏、关注 &#x1f389;&#x1f389;&#x1f389;回顾过去 各位CSND的小伙伴们大家好&#xf…

C · 进阶 | 慎看!深剖文件操作,怕你停不下

啊我摔倒了..有没有人扶我起来学习.... 目录前言一、 什么是文件1.1 程序文件1.2 数据文件1.3 文件名二、文件的打开和关闭2.1 文件指针2.2 文件的打开和关闭三、文件的顺序读写3.0 有必要解释一下*3.1 fputc3.2 fgetc3.3 fprintf3.4 fscanf3.4.1来个小总结&#xff08;这里忽略…

双非本23秋招之路-从考研跑路到某安全大厂(无实习、项目)

文章目录双非本23秋招之路-从考研跑路到某安全大厂&#xff08;无实习、项目&#xff09;一、自我介绍二、简历准备三、刷题四、八股文五、项目方面六、关于实习七、面试方面八、秋招路程九、简历投递十、面经分享双非本23秋招之路-从考研跑路到某安全大厂&#xff08;无实习、…

springboot+jsp新闻发布投稿系统

本文采用JSP技术构建的一个管理系统&#xff0c;实现了一个新闻发布系统。新闻发布系统的主要实现功能包括&#xff1a;管理员&#xff1a;首页、个人中心、用户管理 、新闻分类管理 、新闻信息管理、新闻投稿管理、论坛管理、我的收藏管理、投诉建议管理、系统管理。前台首页&…

Python编程 print输出函数

作者简介&#xff1a;一名在校计算机学生、每天分享Python的学习经验、和学习笔记。 座右铭&#xff1a;低头赶路&#xff0c;敬事如仪 个人主页&#xff1a;网络豆的主页​​​​​​ 目录 前言 一.输入与输出 1.print&#xff08;&#xff09;输出函数 2.sep 3.en…

【MySQL数据库和JDBC编程】第三章-第一节:MySQL的增删查改基础篇

文章目录一&#xff1a;INSET新增二&#xff1a;SELECT查询&#xff08;1&#xff09;全列查询&#xff08;2&#xff09;指定列查询&#xff08;3&#xff09;查询字段为表达式&#xff08;4&#xff09;起别名&#xff08;5&#xff09;去重&#xff08;DISTINCT&#xff09;…

微信小程序request:fail报错(包括不执行fail回调问题)

微信小程序request:fail报错&#xff08;包括不执行fail回调的问题&#xff09;1. 不执行fail回调的问题2. request:fail报错原因2.1 小程序未配置域名导致的错误2.2 微信小程序使用的服务器环境不支持TLS1.22.3 使用的SSL证书不信任2.4 SSL证书证书链缺乏2.5 域名未备案&#…

使用Spring框架进行Web项目开发(初级)

目录 前言 1. 为什么常规的Spring框架不适合Web项目呢&#xff1f; 2. 如何在Spring框架中创建容器&#xff1f; 3. Spring框架开发Web项目的步骤 3.1 创建maven项目 3.2 添加相应的依赖 3.3 在webapp目录下的web.xml中注册监听器 3.4 在webapp文件夹下的web.xml中配置…