本题要求实现一个找出整型数组中最大值的函数。_划分数组:二分

472ad602cbbea122821287de2dec7d9d.png

@TOC

给定一个整型数组arr, 数组中的每个值都为正数,表示完成一个工作需要的时间,再给定一个整数num,表示工人的数量,每个工人只能完成连在一起的工作。所有工人并行工作,请返回完成所有的工作的最少时间。

本题的问题可以理解为给定一个数组arr[] 将其尽可能的等分为k份,其中每一份中的最大值的最小值是多少?

测试用例

输入 3 2 3 1 4 输出 4 说明: 划分为[3 1]、[4]
输入 5 3 1 1 1 4 3 输出 4 说明:划分为[1 1 1]、[4]、[3]

本题思路

最终所求是完成工作最多的那个工人的工作时长,问题需要使得这个时长尽可能小,即数组尽可能的均匀分配
设定每个工人的工作时长限制为limit 如果limit=sum 那么只需要一个工人就可以完成所有工作 如果limit=0 那么无法完成

因此可以划分为一个二分的思路,即存在这样一个人均工作时长(均分每部分的上限),使得完成arr[]所有工作,恰好k个工人能完成,这里恰好的意思是:即不会出现工人空闲的情况(之前人

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值