2021-04-17:给定一个整型数组 arr,数组中的每个值都为正数,表示完成一幅画作需要的时间,再 给定 一个整数 num,表示画匠的数量,每个画匠只能画连在一起的画作。所有的画家 并行工作,请
2021-04-17:给定一个整型数组 arr,数组中的每个值都为正数,表示完成一幅画作需要的时间,再 给定 一个整数 num,表示画匠的数量,每个画匠只能画连在一起的画作。所有的画家 并行工作,请 返回完成所有的画作需要的最少时间。【举例】arr=[3,1,4],num=2。最好的分配方式为第一个画匠画 3 和 1,所需时间为 4。第二个画匠画 4,所需时间 为 4。 因为并行工作,所以最少时间为 4。如果分配方式为第一个画匠画 3,所需时 间为 3。第二个画 匠画 1 和 4,所需的时间为 5。那么最少时间为 5,显然没有第一 种分配方式好。所以返回 4。arr=[1,1,1,4,3],num=3。最好的分配方式为第一个画匠画前三个 1,所需时间为 3。第二个画匠画 4,所需时间 为 4。 第三个画匠画 3,所需时间为 3。返回 4。
福大大 答案2021-04-17:
二分法。
代码用golang编写。代码如下:
package mainimport ("fmt""math"
)func main() {arr := []int{2, 6, 3, 5}M := 2ret := splitArray3(arr, M)fmt.Println(ret)
}
func splitArray3(nums []int, M int) int {sum := int64(0)for i := 0; i < len(nums); i++ {sum += int64(nums[i])}l := int64(0)r := int64(sum)ans := int64(0)for l <= r {mid := int64((l + r) / 2)cur := getNeedParts(nums, mid)if cur <= M {ans = midr = mid - 1} else {l = mid + 1}}return int(ans)
}
func getNeedParts(arr []int, aim int64) int {for i := 0; i < len(arr); i++ {if int64(arr[i]) > aim {return math.MaxInt32}}parts := 1all := arr[0]for i := 1; i < len(arr); i++ {if int64(all+arr[i]) > aim {parts++all = arr[i]} else {all += arr[i]}}return parts
}
执行结果如下:
左神java代码
力扣410. 分割数组的最大值
2021-04-17:给定一个整型数组 arr,数组中的每个值都为正数,表示完成一幅画作需要的时间,再 给定 一个整数 num,表示画匠的数量,每个画匠只能画连在一起的画作。所有的画家 并行工作,请相关推荐
- 2014年去哪儿网笔试题--给定一个整型数组,对这个整型素组排序,使得按序拼接数组各元素得到的值最小
2014年去哪儿网笔试题--给定一个整型数组,对这个整型素组排序,使得按序拼接数组各元素得到的值最小. 我的大致思路是把这个整型数组转换成String数组,然后通过String类的compareTo方 ...
- 2021-02-15:给定一个整型数组arr,代表数值不同的纸牌排成一条线。玩家A和玩家B依次拿走每张纸牌,规定玩家A先拿,玩家B后拿。但是每个玩家每次只能拿走最左或最右的纸牌,玩家A和玩家B都绝顶聪
2021-02-15:给定一个整型数组arr,代表数值不同的纸牌排成一条线.玩家A和玩家B依次拿走每张纸牌,规定玩家A先拿,玩家B后拿.但是每个玩家每次只能拿走最左或最右的纸牌,玩家A和玩家B都绝顶聪 ...
- 给定一个整型数组arr,代表数值不同的纸牌排成一条线。玩家A和玩家B依次拿走每张纸牌,规定玩家A先拿,然后B后拿,但是每个玩家每次只能拿走最左或最右的纸牌,玩家A和玩家B都绝顶聪明。求最后获胜者的分数
题目:给定一个整型数组arr,代表数值不同的纸牌排成一条线.玩家A和玩家B依次拿走每张纸牌,规定玩家A先拿,玩家B后拿,但是每个玩家每次只能拿走最左或最右的纸牌,玩家A和玩家B都绝顶聪明.请返回最后获 ...
- 输入一个整型数组,数组里有正数也有负数。数组中的一个或连续多个整数组成一个子数组。求所有子数组的和的最大值。要求时间复杂度为O(n)
输入一个整型数组,数组里有正数也有负数.数组中的一个或连续多个整数组成一个子数组.求所有子数组的和的最大值.要求时间复杂度为O(n).(奇安信-wab前端) 例如,输入的数组为{ 1.-2.3.10. ...
- 定义一个含有30个整型元素的数组,按顺序分别赋予从2开始的偶数;然后按顺序每五个数求出一个平均值,放在另一个数组中并输出。
定义一个含有30个整型元素的数组,按顺序分别赋予从2开始的偶数:然后按顺序每五个数求出一个平均值,放在另一个数组中并输出. var arr = [];for (var i = 1; i <= 6 ...
- C语言试题三十七之求除一个2×m整型二维数组中最大元素的值,并将此值返回调用函数。
1. 题目 请编写一个函数function,它的功能是:求除一个2×m整型二维数组中最大元素的值,并将此值返回调用函数. 2 .温馨提示 C语言试题汇总里可用于计算机二级C语言笔试.机试.研究生复试中 ...
- c语言学习-定义一个整型数组a[10],将数组a[10]中的10个元素按逆序重新存放
定义一个整型数组a[10],将数组a[10]中的10个元素按逆序重新存放 程序流程图: 代码: #include<stdio.h> void main() { int a[10]; int ...
- C语言编程>第六周 ① 编写一个录入函数:用来从键盘接收n个整型数并存放在一个整型数组中。 在主函数中调用该函数计算出这n个整数之和。
例题:编写一个录入函数:用来从键盘接收n个整型数并存放在一个整型数组中. 在主函数中调用该函数计算出这n个整数之和. 代码如下: /*代码分析:录入函数需要两个参数:一个参数是需要用来存储数字的数组, ...
- int java 声明_怎样用java定义一个int数组 C++ 怎么声明一个整型数组?
导航:网站首页 > 怎样用java定义一个int数组 C++ 怎么声明一个整型数组? 怎样用java定义一个int数组 C++ 怎么声明一个整型数组? 相关问题: 匿名网友: int[] anA ...
最新文章
- [Spring mvc 深度解析(一)] 详解Servlet
- 【转】Office 2003 EXCEL多窗口打开
- 高情商女神是怎样炼成的?直播EMUI9.0制胜法宝“陪伴实测”
- UOJ #587. 天天和不可描述
- 蓝桥杯JAVA---2013---B----世纪末的星期
- ClassNotFoundException:是否会减慢您的JVM?
- python log日志_Python的log日志功能及设置方法
- Python print 语句(Python 2 与 Python 3)
- 企业使用大数据分析有什么好处
- CSS font-family 各名称一览表
- Linux 编译并更换内核
- 如何配置shopex网店静态化(URL重写)
- 51单片机:编程实现数码管显示0~999999的秒表计时,高位的0不显示。
- oracle的alter table,Oracle ALTER TABLE语句
- 《拥抱机器人时代——Servo杂志中文精华合集》——4.3 理解智能设备
- 为什么需要工作流调度系统?
- 「 LaTex 」写论文,作者旁添加ORCID
- 新手用cdr如何设计名片_新名片设计
- 【NOIP2018】摆渡车
- Tensorrt 7.2.3 转换yolov5 v3.0 pytorch1.8.1 onnx1.6.0
热门文章
- php取出字符串前两位,php怎么取出字符串的前几位
- 奋斗吧,程序员——第四十一章 今日种种,似水无痕;明夕何夕,君已陌路
- 软件工程团队队名_软件工程团队的工具
- C语言——图书结构体数组实现以及简单操作
- springboot + vue + elementUI项目实战——简洁清新的员工管理系统(一)
- CVPR2021 6篇惊艳审稿人的抠图算法代码汇总!附创新点
- 两种在QGIS中制作高德铁路线型符号的方法
- 关于APP在小米5s第一次安装启动后,点击home返回桌面,再次进入重进闪屏页问题
- 找一个文件夹里面照片的名字,python转换为csv文件
- mysql8.0查看用户的密码策略_MySQL8.0 密码管理与密码策略