410. 分割数组的最大值
创始人
2024-01-27 07:17:00
0

给定一个非负整数数组 nums 和一个整数 m ,你需要将这个数组分成 m 个非空的连续子数组。

设计一个算法使得这 m 个子数组各自和的最大值最小。

示例 1:

输入:nums = [7,2,5,10,8], m = 2
输出:18
解释:
一共有四种方法将 nums 分割为 2 个子数组。 
其中最好的方式是将其分为 [7,2,5] 和 [10,8] 。
因为此时这两个子数组各自的和的最大值为18,在所有情况中最小。

示例 2:

输入:nums = [1,2,3,4,5], m = 2
输出:9

示例 3:

输入:nums = [1,4,4], m = 3
输出:4

提示:

  • 1 <= nums.length <= 1000
  • 0 <= nums[i] <= 106
  • 1 <= m <= min(50, nums.length)

 

//找第一个大于mid
bool findM(vector&nums, int mid,int k)
{
          int sum = 0;
        int count = 1; //分割块数
        for (int i = 0; i < nums.size(); i++)
        {
            if (sum + nums[i]> mid) //尝试
            {
                count++;            
                sum = nums[i];
            }
            else
            {
                sum += nums[i];
            }
        }

        return count <= k;
}

int splitArray(vector& nums, int k)
{
    //找出左右的尝试范围
    int left = 0; //最大分割和
    int right = 0;
    for (int i = 0; i < nums.size(); i++)
    {
        right+= nums[i];
        if (left < nums[i])
        {
            left = nums[i];
        }
    }
    //
    int mid =0;
    while (left < right)
    {
        mid = (left + right) / 2;
        if (findM(nums, mid, k))
        {
            right = mid;
        }
        else
        {
            left = mid + 1;//找出最大的left
        }
    }

    return left;


}
 

相关内容

热门资讯

适合女人的未来新兴行业 适合女... 文|希财网最赚钱的行业一定是一个有前景的行业,景气度关乎该行业的兴衰。如果一个行业景气度不够,那么毛...
中国未来10年内最热门的五大新... 互联网是当下极具发展前景的行业,长沙新华电脑学院一直专注于互联网教育,也一直关注互联网行业的未来发展...
90后最年轻创业者创业故事,最... 90后最年轻创业者创业故事,最励志的创业故事来源:•2020-06-根据中国青年报社会调查中心的数据...
创业板指数基金怎么理解?普及一... 创业板指数基金怎么理解?我相信大家经常都会在一些新闻和网站上看到创业板、创业板指数基金等词,但都不理...
战略性新兴行业 战略性新兴行业... 国务院关于加快培育和发展战略性新兴产业的决定国发〔2010〕32号  各省、自治区、直辖市人民政府,...
【中央政府网站】我国将扩大新一... 根据国家发展改革委、科技部、工业和信息化部、财政部等四部门联合印发的《关于扩大战略性新兴产业投资培育...
10万元投资创业 10万元投资... 10万元投资创业有哪些的适合项目?创业风潮的兴起,使得诸多的人是想通过创业的项目来赚取越来越多的财富...
10万元投资什么好?10万元可... 近年来,随着市场经济的繁荣稳定,更多的人热衷于投资,寄希望于以钱生钱,而想要省心、省力的投资,品牌加...
如何创业和组建创创业团队业团队... |能力这是毋庸置疑和首当其冲的,但有两个层面:第一,能力和水平是不同的,水平衡量了当前的能力,但能力...
创业团队都有哪些有效的团队管理... 字面上,我们很容易从「管」字入手,认为管理的主要任务是「管人」和「管事」。但管理的首要任务并非「管事...