每日一练 2024.5.16(补2024.5.12)

题目:

给你 n 个项目,编号从 0 到 n - 1 。同时给你一个整数数组 milestones ,其中每个 milestones[i] 表示第 i 个项目中的阶段任务数量。

你可以按下面两个规则参与项目中的工作:

  • 每周,你将会完成 某一个 项目中的 恰好一个 阶段任务。你每周都 必须 工作。
  • 在 连续的 两周中,你 不能 参与并完成同一个项目中的两个阶段任务。

一旦所有项目中的全部阶段任务都完成,或者仅剩余一个阶段任务都会导致你违反上面的规则,那么你将 停止工作 。注意,由于这些条件的限制,你可能无法完成所有阶段任务。

返回在不违反上面规则的情况下你 最多 能工作多少周。

示例 1:

输入:milestones = [1,2,3]
输出:6
解释:一种可能的情形是:
​​​​- 第 1 周,你参与并完成项目 0 中的一个阶段任务。
- 第 2 周,你参与并完成项目 2 中的一个阶段任务。
- 第 3 周,你参与并完成项目 1 中的一个阶段任务。
- 第 4 周,你参与并完成项目 2 中的一个阶段任务。
- 第 5 周,你参与并完成项目 1 中的一个阶段任务。
- 第 6 周,你参与并完成项目 2 中的一个阶段任务。
总周数是 6 。

示例 2:

输入:milestones = [5,2,1]
输出:7
解释:一种可能的情形是:
- 第 1 周,你参与并完成项目 0 中的一个阶段任务。
- 第 2 周,你参与并完成项目 1 中的一个阶段任务。
- 第 3 周,你参与并完成项目 0 中的一个阶段任务。
- 第 4 周,你参与并完成项目 1 中的一个阶段任务。
- 第 5 周,你参与并完成项目 0 中的一个阶段任务。
- 第 6 周,你参与并完成项目 2 中的一个阶段任务。
- 第 7 周,你参与并完成项目 0 中的一个阶段任务。
总周数是 7 。
注意,你不能在第 8 周参与完成项目 0 中的最后一个阶段任务,因为这会违反规则。
因此,项目 0 中会有一个阶段任务维持未完成状态。

提示:

  • n == milestones.length
  • 1 <= n <= 105
  • 1 <= milestones[i] <= 109
解题:

        在这个问题中,我们面对的是一种调度问题,我们的目标是最大化在给定规则下可以工作的周数。基于这个问题的特性,我们可以分析出关键的思路:我们不能连续两周工作在同一个项目上,这意味着当一个项目的任务多于其他所有项目的总和时,这个项目就会变成瓶颈。

        因此,我们的核心策略是,尽可能平均地在所有项目中分配任务。如果一个项目的任务过多,超过了其他所有项目任务数的总和,那么多出来的部分就无法完成,因为我们没有足够的"间隙"去安排它们。考虑到这一点,我们可以通过找出任务最多的项目,然后判断它的任务数是否超过其他所有项目任务数的总和来解决这个问题。

代码:
public long numberOfWeeks(int[] milestones) {long max = 0; // 用于记录任务最多的项目的任务数long sum = 0; // 用于记录所有项目任务数的总和for (int milestone : milestones) {max = Math.max(max, milestone);sum += milestone;}long rest = sum - max; // 计算除了任务最多的项目外,其他所有项目任务数的总和if (max > rest) {// 如果任务最多的项目的任务数超过了其他所有项目的总和,// 那么最多能工作的周数就是2倍的其他所有项目的总和加上1,// 因为每周可以在两个不同的项目之间交替,最后加上最开始工作的那周。return 2 * rest + 1;} else {// 如果没有一个项目的任务数超过了其他所有项目的总和,// 那么可以完成所有的任务,总周数就是所有任务的总和。return sum;}
}
知识点讲解:
  1. 基本数据类型与运算

    • 使用了long类型来定义变量,这是因为milestones[i]的取值范围可能导致其总和超出int类型的最大值。
    • 使用了for循环来遍历数组,这是处理数组中每个元素的常用方法。
    • 使用了Math.max()方法来找到数组中的最大值,这是Java标准库提供的一个非常方便的方法,用于比较两个数值并返回较大值。
  2. 条件语句

    • 使用了if-else条件判断结构,根据一个项目的任务数和其他所有项目任务数的总和的比较结果,来选择不同的计算路径。
  3. 算法思维

    • 利用算法思想分析问题,通过计算和比较得到结果。核心是理解问题的本质,将它转化为数学或逻辑问题,然后使用编程技巧解决。
  4. 累加和问题

    • 在遍历时对数组元素进行累加,常用于求解数组中元素的和。本例中,通过累加来计算所有项目的总任务数。
  5. 数组处理

    • 整个解决方案中使用数组来表示每个项目的阶段任务数,对数组的处理是实现算法的基础。
  6. 复杂度理解

    • 理解代码执行的时间复杂度,本代码具有O(n)的时间复杂度,这是因为它通过一次遍历完成了所有需要的计算。

下表总结了上述提到的一些关键点及其在代码中的应用:

知识点描述应用
基本数据类型与运算使用基本数据类型定义变量,使用算术运算符进行计算。使用long定义变量,Math.max()进行最大值比较
条件语句根据条件执行不同的代码路径。使用if-else结构根据条件进行不同的周数计算
算法思维分析问题的本质,并设计有效的程序解决方案。分析任务分配策略,采用适合的算法计算最大工作周数
累加和问题对数组或数列中的元素进行累加以求和。遍历数组进行累加以求得总任务数
数组处理使用数组存储和处理数据集合。使用数组milestones保存每个项目的阶段任务数
复杂度理解理解代码执行所需的时间与资源,以优化性能。本解决方案通过一次数组遍历(O(n))来计算结果,

2024.5.12

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

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

相关文章

堆的概念及结构

目录 堆的性质&#xff1a; 堆的实现 堆向下调整算法 堆的创建 堆的插入 堆的删除 堆的应用 堆排序 对比冒泡的优势&#xff1a; 代码 头文件 源文件 如果有一个关键码的集合K { &#xff0c; &#xff0c; &#xff0c;…&#xff0c; }&#xff0c;把它的所有元…

JUnit5测试用例

1.用Test注解表示为测试方法 2.使用DisplayName定义别名 3.使用Assertions类的断言方法 使用断言&#xff0c;可以判断方法的实际执行结果和预期结果是否一致 assertEqualsassertTureassertNotNullassertAllassertThrows 下图是预期与实际不同时报错图 4.使用BeforeEach注解&…

SQL操作面试题

1、NULL和 的区别 || MySQL中为什么不用NULL作为默认值 聚合函数&#xff0c;比如SUM、AVG等会忽略NULL&#xff0c;会造成数据的一个分析误差。只能通过COUNT&#xff08;*&#xff09; NULL的话只能通过ISNULL和ISNotNULL去进行判断&#xff0c;而 可以用<,>,等等…

怎么转换视频格式到mp4?格式转换,4种简单方法

转换视频格式到MP4可以使视频在各种设备上播放更加方便&#xff0c;而MP4格式的优势在于其高质量的视频和相对较小的文件大小。怎么转换视频格式到mp4&#xff1f;在本文中&#xff0c;我们将介绍四种简单有效的方法&#xff0c;帮助您快速将视频格式转换为MP4。 无论您是初学…

花花省V6淘宝客APP社交电商自营商城聚合优惠券系统功能介绍

花花省V6淘宝客APP的社交电商自营商城聚合优惠券系统具有多种功能&#xff0c;以满足用户的不同需求。以下是其主要功能的介绍&#xff1a; 首页功能&#xff1a;首页设计包含广告位、淘口令识别、微信登录、淘宝登录等。此外&#xff0c;还有淘宝返佣、拼多多返佣、京东返佣、…

软考:数据流图案例

阅读下列说明和图&#xff0c;回答问题1至问题4。 一、说明 某医院欲开发病人监控系统。该系统通过各种设备监控病人的生命体征&#xff0c;并在生命体征异常时向医生和护理人员报警。该系统的主要功能如下&#xff1a; &#xff08;1&#xff09;本地监控&#xff1a;定期获…

剑指Offer打卡day34——AcWing 66. 两个链表的第一个公共结点

AcWing 66. 两个链表的第一个公共结点 暴力做法&#xff0c;两层for循环 /*** Definition for singly-linked list.* public class ListNode {* int val;* ListNode next;* ListNode(int x) {* val x;* next null;* }* }*/ class Solutio…

Linux ps命令详细参数

一、简介 在Linux系统中&#xff0c;ps(Process Status的缩写)命令常常用来用来列出系统中当前运行的进程。ps命令列出的是当前那些进程的快照&#xff0c;就是执行ps命令的那个时刻的那些进程&#xff0c;如果想要动态的显示进程信息&#xff0c;就可以使用top命令。要对进程…

Synchronize 底层实现原理

1 、加锁实现原理 public class SynchronizedTest {public void get(){synchronized (this){ // 这个是同步代码块System.out.println("你好呀");}}public synchronized void f(){ //这个是同步方法System.out.println("Hello world");}public s…

DC-DC直流升压线性可调电源模块电压控制输出0-50V/0-80V/0-100V/0-200V/0-250V/0-300V/0-500V/0-1000V

特点 效率高达 75%以上1*2英寸标准封装单电压输出可直接焊在PCB 上工作温度: -40℃~75℃阻燃封装&#xff0c;满足UL94-V0 要求温度特性好电压控制输出,输出电压随控制电压线性变化 应用 GRB 系列模块电源是一种DC-DC升压变换器。该模块电源的输入电压分为&#xff1a;4.5~9V、…

转载 | 大佬3万字深度分析:2024全球游戏业正在遭遇什么困境?

2022年&#xff0c;游戏业当时的裁员人数达到了破纪录的8500人&#xff0c;2023年这个数字几乎增长了20%&#xff0c;然后在2024开年的两个月&#xff0c;就已经有7800人丢掉了工作。伴随着这些裁员的&#xff0c;是大量表现不及预期的或者完全失败的游戏&#xff0c;还有更多处…

Linux(八) 进程间通信

目录 一、什么进程间通信 1.1 进程间通信的目的 1.2 进程间通信的概念 1.3 进程间通信的分类 二、 管道/匿名管道(pipe) 2.1 什么是管道 2.2 管道的创建 2.3 站在文件描述符角度-深度理解管道 2.4 站在内核角度-管道本质 2.5 匿名管道的读写 2.6 匿名管道的读写规则 …

运动耳机怎么选?五款新手必买的运动耳机盘点

运动耳机是专为运动爱好者设计的耳机&#xff0c;轻巧便携&#xff0c;佩戴稳固。无论你在跑步、健身还是骑行&#xff0c;它都能为你带来优质的音乐体验。那如何选择一款合适的运动耳机呢&#xff1f;这里&#xff0c;我结合自己和身边朋友平时选购经验&#xff0c;整理了一些…

编程实战:自己编写HTTP服务器(系列5:执行后台shell命令)

初级代码游戏的专栏介绍与文章目录-CSDN博客 我的github&#xff1a;codetoys&#xff0c;所有代码都将会位于ctfc库中。已经放入库中我会指出在库中的位置。 这些代码大部分以Linux为目标但部分代码是纯C的&#xff0c;可以在任何平台上使用。 系列入口&#xff1a;编程实战…

单片机负电压

在电子电路中我们常常需要使用负电压&#xff0c;比如说我们在使用运放的时候常常需要建立一个负电压。下面就简单的以正5V电压到负电压5V为例说一下它的电路。 通常需要使用负电压时一般会选择使用专用的负压产生芯片&#xff0c;但这些芯片都比较贵&#xff0c;比如电荷泵原理…

P1229 遍历问题

题目描述 我们都很熟悉二叉树的前序、中序、后序遍历&#xff0c;在数据结构中常提出这样的问题&#xff1a;已知一棵二叉树的前序和中序遍历&#xff0c;求它的后序遍历&#xff0c;相应的&#xff0c;已知一棵二叉树的后序遍历和中序遍历序列你也能求出它的前序遍历。然而给…

剪辑师创作必备声音素材,BGM背景音效素材合集1万款

一、素材描述 本套音效包含了全面丰富的声音效果&#xff0c;如动物、运输、人群、天气、航空、军事、Foley声音等&#xff0c;以及世界各地的场景声效等&#xff0c;可能是同类音效中最为全面的&#xff0c;共由三套声音素材组合而成&#xff0c;1、熊猫背景音乐3800首&#…

宁静致远(“静”)

宁静致远是一个成语&#xff0c;读音为nng jng zh yuǎn&#xff0c;意思是只有心境平稳沉着、专心致志&#xff0c;才能厚积薄发、 有所作为。出自《淮南子:主术训》。 出处 宁静致远张铭篆刻 此句最早出自西汉初年道家刘安的《淮南子:主术训》&#xff0c;蜀汉丞相诸葛亮的…

5年增100倍6秒卖1瓶酒,酣客的“FFC模式”是什么

酣客酱酒销售模式&#xff0c;白酒FFC模式&#xff0c;白酒新零售模式设计 坐标&#xff1a;厦门&#xff0c;我是易创客肖琳 深耕社交新零售行业10年&#xff0c;主要提供新零售系统工具及顶层商业模式设计、全案策划运营陪跑等。 不知从何时起&#xff0c;营销圈开始有这么一…