Leetcode 410. 分割数组的最大值

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

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

示例 1:

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

输入:nums = [1,2,3,4,5], k = 2
输出:9
示例 3:

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

提示:

1 <= nums.length <= 1000
0 <= nums[i] <= 106
1 <= k <= min(50, nums.length)
在这里插入图片描述
先二分mid,然后把能够分成m段,转化成最优化问题,即最少能分成多少段?
在这里插入图片描述
然后贪心求解最少能分成多少段,这里的思想是考虑每个段都是贪得无厌的,只要下一段能加进去,就不断加。直到最后

class Solution {
public:
    bool chack(vector<int>& nums, int k, int mid) {
        int sum = 0, cnt = 0;
        for(auto a : nums) {
            if(a > mid) return false;
            if(sum + a <= mid) sum += a;
            else { // 重新开一段
                sum = a;
                cnt ++;
            }
        }
        if(sum != 0) cnt ++;
        return cnt <= k;
    }

    int splitArray(vector<int>& nums, int k) {
        int l = 0, r = INT_MAX;
        while(l < r) {
            int mid = (long long) l + r >> 1;
            if(chack(nums, k, mid)) r = mid;
            else l = mid + 1;
        }
        return r;
    }
};

相关推荐

  1. LeetCode-410.分割

    2024-04-13 11:46:01       35 阅读
  2. LC 410. 分割

    2024-04-13 11:46:01       37 阅读
  3. LeetCode 0410.分割:二分

    2024-04-13 11:46:01       37 阅读
  4. LeetCode: 2779. 美丽

    2024-04-13 11:46:01       8 阅读
  5. leetcode 1749.任意子绝对值

    2024-04-13 11:46:01       9 阅读

最近更新

  1. TCP协议是安全的吗?

    2024-04-13 11:46:01       16 阅读
  2. 阿里云服务器执行yum,一直下载docker-ce-stable失败

    2024-04-13 11:46:01       16 阅读
  3. 【Python教程】压缩PDF文件大小

    2024-04-13 11:46:01       15 阅读
  4. 通过文章id递归查询所有评论(xml)

    2024-04-13 11:46:01       18 阅读

热门阅读

  1. 机器学习和深度学习常见算法

    2024-04-13 11:46:01       16 阅读
  2. 如何实现vue点击按钮进行图片浏览 ?

    2024-04-13 11:46:01       33 阅读
  3. 机器学习—1.快速入门

    2024-04-13 11:46:01       19 阅读
  4. Vue isRef、unref、toRef和toRefs的用法

    2024-04-13 11:46:01       16 阅读
  5. 前端部署汇总

    2024-04-13 11:46:01       18 阅读
  6. 基于C# Socket实现的简单的Redis客户端

    2024-04-13 11:46:01       16 阅读
  7. AWTK 开源串口屏 MODBUS Server 模型

    2024-04-13 11:46:01       33 阅读
  8. 写代码的修养

    2024-04-13 11:46:01       19 阅读
  9. 设计模式的7大基本原则

    2024-04-13 11:46:01       17 阅读