【vivo秋招0912】三、最少开发工时总和 <模拟>

2023-09-22 14:24:20

三、最少开发工时总和

某开发小组近期承接了多个研发项目,作为组长的你需要为员工分配工作任务。具体要求如下:
项目划分到的任务工时用二维数组 tasks 表示,其中 tasks[i][j] 表示的是第 i 个项目中第 j 个任务的开发工时;现在组内员工有 n 个,每个工作任务只能分配给一位员工,一位员工可以被分配多个任务,一个任务完成才能进行下一个任务,且每个项目必须所有员工参与。
请为组内员工设计一套最合理的工作任务安排,使得每个项目中各员工的工作时长最接近,计算并返回每个项目中员工最少的开发工时总和。

注意:
1 <= n <= tasks[i].length <= 10
1 <= tasks[i][j] <= 30

示例输入:

[[2,3,1],[1,2,6,2],[3,2]],2

输出:

10

解释:

总共2个员工
第1个项目[2,3,1],分给2个员工为[3],[2,1],最少的为 [3][2,1]2个项目[1,2,6,2],分给2个员工为[1,2,2],[6],最少的为[1,2,2]3个项目[3,2],分给2个员工为[3],[2],最少的为[2]
所有项目最少工作时长总和: 3+5+2=10

题解

思路:分配每个项目中任务,均匀分配为 n 份,取均匀分配完最小的那份。然后累加。

	public int leastTimeSum (int[][] tasks, int n) {
	    int allCost = 0;
	
	    for(int[] mission: tasks){
	        int length = mission.length;
	        
	        // 分不了n份,说明最小那份是0
	        if(length<n){
	            continue;
	        }
	        Arrays.sort(mission);
	        
	        //对于每一个任务构造 n个槽,并且都是0
	        int[] nowCost = new int[n];
	        for(int i=0;i<n;i++){
	            nowCost[i]=0;
	        }
	        
	        for(int i =length-1;i>=0;i--){
	            //找槽总数最小的那个下标
	            int index = minIndex(nowCost);
	            //放进槽小的那个
	            nowCost[index] += mission[i];
	        }
	
	        // 加上槽最少的那组
	        allCost += nowCost[minIndex(nowCost)];
	
	    }
	    return allCost;
	}
	
	// 第几个槽 总数最小
	public static int minIndex(int[] array){
	    int min =array[0];
	    int index = 0;
	    for(int i =0;i<array.length;i++){
	        if(array[i]<min){
	            min = array[i];
	            index = i;
	        }
	    }
	    return index;
	}
更多推荐

商家收款一万手续费多少

目前微信和支付宝作为主流的支付平台,为商家提供了安全、便捷的支付解决方案。但是在正常情况下,商家需要向平台支付交易额0.6%至1%不等的手续费,这个费率看似很少,但长期积累下来的手续费支出也是一笔不小的开支。什么是收款手续费率?收款手续费率是指的是我们商家在用收款码收款的时候,每次收款都会被微信或者支付宝扣一笔费用,这

Linux日志管理-logrotate(crontab定时任务、Ceph日志转储)

文章目录一、logrotate概述二、logrotate基本用法三、logrotate运行机制logrotate参数四、logrotate是怎么做到滚动日志时不影响程序正常的日志输出呢?Linux文件操作机制方案一方案二五、logrotate实战--Ceph日志转储参考一、logrotate概述logrotate是一个

盛元广通农业种子检测实验室信息化管理系统LIMS

农业问题以及粮食安全关系着我们的基本民生,尤其是随着农业科技的发展,借助现代化实验室管理系统,在种子质量检验中能让实验室检验实现自动化运行,实现无纸化和信息化办公,让数据分析得到科学完整的管理,减少运行成本。盛元广通农业种子检测实验室信息化管理系统LIMS结合工作实际流程制作,从种子采购、种子入库、种子库存、更新提醒、

智云谷再获AR HUD新项目定点,打开HUD出口海外新通道

深圳前海智云谷科技有限公司(以下简称“智云谷”)于近日收到国内某新能源车企的《定点通知书》,选择智云谷作为其新车型ARHUD开发与量产供应商。智云谷获得定点的车型为海外出口车型,该车型预计在2024年下半年量产。中国汽车全产业链出海“圈粉”随着中国新能源车的强势崛起,中国车企纷纷开始拓展海外市场。海关总署数据显示,今年

单点登录原理及JWT实现

单点登录原理及JWT实现一、单点登录效果首先我们看通过一个具体的案例来加深对单点登录的理解。案例地址:https://gitee.com/xuxueli0323/xxl-sso?_from=gitee_search把案例代码直接导入到IDEA中然后分别修改下server和samples中的配置信息在host文件中配置1

【C语言】结构体内存对齐机制详解

目录一、前言二、结构体内存对齐规则三、实例解析一、前言在讲解结构体内存对齐机制之前,我们先来看1个例子:typedefstruct{charsex;//性别intid;//学号charname[20];//姓名floatscore;//成绩charaddr[30];//地址}STU;intmain(){STUstude

LeetCode 27. 移除元素(JavaScript 简单)

1.题目给你一个数组nums和一个值val,你需要原地移除所有数值等于val的元素,并返回移除后数组的新长度。不要使用额外的数组空间,你必须仅使用O(1)额外空间并原地修改输入数组。元素的顺序可以改变。你不需要考虑数组中超出新长度后面的元素。说明:为什么返回数值是整数,但输出的答案是数组呢?请注意,输入数组是以「引用」

使用延迟队列解决分布式事务问题——以订单未支付过期,解锁库存为例

目录一、前言二、库存三、订单一、前言上一篇使用springcloud-seata解决分布式事务问题-2PC模式我们说到了使用springcloud-seata解决分布式的缺点——不适用于高并发场景因此我们使用延迟队列来解决分布式事务问题,即使用柔性事务-可靠消息-最终一致性方案(异步确保型)以下是下订单的代码//@Gl

ctfshow web入门(1)

web1查看页面源代码web2ctr+uweb3因为查看源码没有东西,网络查看下数据包,找到flagweb4robots协议其他都没啥信息,就看下robots.txt,这个文件可能会泄露部分网站目录访问下,看到了web5phps泄露也没啥信息,在响应头里面看到了X-Powered-By:PHP/7.3.11得知-网站是

Grom 如何解决 SQL 注入问题

什么是SQL注入SQL注入是一种常见的数据库攻击手段,SQL注入漏洞也是网络世界中最普遍的漏洞之一。SQL注入就是恶意用户通过在表单中填写包含SQL关键字的数据来使数据库执行非常规代码的过程。这个问题的来源就是,SQL数据库的操作是通过SQL命令执行的,无论是执行代码还是数据项都必须卸载SQL语句中,这就导致如果我们在

【操作系统笔记十二】Linux常用基础命令

Linux常用快捷键Tab命令或路径等的补全键,特别常用的快捷键Ctrl+insert复制命令行内容(常用可提高效率)Shift+insert粘贴命令行内容(常用可提高效率)Ctrl+C中断当前任务(退出)Ctrl+Z暂停当前任务Ctrl+I清除屏幕所有的内容Ctrl+A光标迅速回到行首Ctrl+E光标迅速回到行尾Ct

热文推荐