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,表示画匠的数量,每个画匠只能画连在一起的画作。所有的画家 并行工作,请相关推荐

  1. 2014年去哪儿网笔试题--给定一个整型数组,对这个整型素组排序,使得按序拼接数组各元素得到的值最小

    2014年去哪儿网笔试题--给定一个整型数组,对这个整型素组排序,使得按序拼接数组各元素得到的值最小. 我的大致思路是把这个整型数组转换成String数组,然后通过String类的compareTo方 ...

  2. 2021-02-15:给定一个整型数组arr,代表数值不同的纸牌排成一条线。玩家A和玩家B依次拿走每张纸牌,规定玩家A先拿,玩家B后拿。但是每个玩家每次只能拿走最左或最右的纸牌,玩家A和玩家B都绝顶聪

    2021-02-15:给定一个整型数组arr,代表数值不同的纸牌排成一条线.玩家A和玩家B依次拿走每张纸牌,规定玩家A先拿,玩家B后拿.但是每个玩家每次只能拿走最左或最右的纸牌,玩家A和玩家B都绝顶聪 ...

  3. 给定一个整型数组arr,代表数值不同的纸牌排成一条线。玩家A和玩家B依次拿走每张纸牌,规定玩家A先拿,然后B后拿,但是每个玩家每次只能拿走最左或最右的纸牌,玩家A和玩家B都绝顶聪明。求最后获胜者的分数

    题目:给定一个整型数组arr,代表数值不同的纸牌排成一条线.玩家A和玩家B依次拿走每张纸牌,规定玩家A先拿,玩家B后拿,但是每个玩家每次只能拿走最左或最右的纸牌,玩家A和玩家B都绝顶聪明.请返回最后获 ...

  4. 输入一个整型数组,数组里有正数也有负数。数组中的一个或连续多个整数组成一个子数组。求所有子数组的和的最大值。要求时间复杂度为O(n)

    输入一个整型数组,数组里有正数也有负数.数组中的一个或连续多个整数组成一个子数组.求所有子数组的和的最大值.要求时间复杂度为O(n).(奇安信-wab前端) 例如,输入的数组为{ 1.-2.3.10. ...

  5. 定义一个含有30个整型元素的数组,按顺序分别赋予从2开始的偶数;然后按顺序每五个数求出一个平均值,放在另一个数组中并输出。

    定义一个含有30个整型元素的数组,按顺序分别赋予从2开始的偶数:然后按顺序每五个数求出一个平均值,放在另一个数组中并输出. var arr = [];for (var i = 1; i <= 6 ...

  6. C语言试题三十七之求除一个2×m整型二维数组中最大元素的值,并将此值返回调用函数。

    1. 题目 请编写一个函数function,它的功能是:求除一个2×m整型二维数组中最大元素的值,并将此值返回调用函数. 2 .温馨提示 C语言试题汇总里可用于计算机二级C语言笔试.机试.研究生复试中 ...

  7. c语言学习-定义一个整型数组a[10],将数组a[10]中的10个元素按逆序重新存放

    定义一个整型数组a[10],将数组a[10]中的10个元素按逆序重新存放 程序流程图: 代码: #include<stdio.h> void main() { int a[10]; int ...

  8. C语言编程>第六周 ① 编写一个录入函数:用来从键盘接收n个整型数并存放在一个整型数组中。 在主函数中调用该函数计算出这n个整数之和。

    例题:编写一个录入函数:用来从键盘接收n个整型数并存放在一个整型数组中. 在主函数中调用该函数计算出这n个整数之和. 代码如下: /*代码分析:录入函数需要两个参数:一个参数是需要用来存储数字的数组, ...

  9. int java 声明_怎样用java定义一个int数组 C++ 怎么声明一个整型数组?

    导航:网站首页 > 怎样用java定义一个int数组 C++ 怎么声明一个整型数组? 怎样用java定义一个int数组 C++ 怎么声明一个整型数组? 相关问题: 匿名网友: int[] anA ...

最新文章

  1. [Spring mvc 深度解析(一)] 详解Servlet
  2. 【转】Office 2003 EXCEL多窗口打开
  3. 高情商女神是怎样炼成的?直播EMUI9.0制胜法宝“陪伴实测”
  4. UOJ #587. 天天和不可描述
  5. 蓝桥杯JAVA---2013---B----世纪末的星期
  6. ClassNotFoundException:是否会减慢您的JVM?
  7. python log日志_Python的log日志功能及设置方法
  8. Python print 语句(Python 2 与 Python 3)
  9. 企业使用大数据分析有什么好处
  10. CSS font-family 各名称一览表
  11. Linux 编译并更换内核
  12. 如何配置shopex网店静态化(URL重写)
  13. 51单片机:编程实现数码管显示0~999999的秒表计时,高位的0不显示。
  14. oracle的alter table,Oracle ALTER TABLE语句
  15. 《拥抱机器人时代——Servo杂志中文精华合集》——4.3 理解智能设备
  16. 为什么需要工作流调度系统?
  17. 「 LaTex 」写论文,作者旁添加ORCID
  18. 新手用cdr如何设计名片_新名片设计
  19. 【NOIP2018】摆渡车
  20. Tensorrt 7.2.3 转换yolov5 v3.0 pytorch1.8.1 onnx1.6.0

热门文章

  1. php取出字符串前两位,php怎么取出字符串的前几位
  2. 奋斗吧,程序员——第四十一章 今日种种,似水无痕;明夕何夕,君已陌路
  3. 软件工程团队队名_软件工程团队的工具
  4. C语言——图书结构体数组实现以及简单操作
  5. springboot + vue + elementUI项目实战——简洁清新的员工管理系统(一)
  6. CVPR2021 6篇惊艳审稿人的抠图算法代码汇总!附创新点
  7. 两种在QGIS中制作高德铁路线型符号的方法
  8. 关于APP在小米5s第一次安装启动后,点击home返回桌面,再次进入重进闪屏页问题
  9. 找一个文件夹里面照片的名字,python转换为csv文件
  10. mysql8.0查看用户的密码策略_MySQL8.0 密码管理与密码策略