码迷,mamicode.com
首页 > 其他好文 > 详细

410. Split Array Largest Sum

时间:2018-05-27 16:25:23      阅读:146      评论:0      收藏:0      [点我收藏+]

标签:col   split   IV   vector   tar   solution   ==   return   code   

class Solution {
public:
    int splitArray(vector<int>& nums, int m) {
        int _max = -1, _sum = 0;
        for (auto n : nums) {
            if (n > _max)   _max = n;
            _sum += n;
        }
        int i = _max, j = _sum;
        while (i < j - 1) {
            int mid = i + (j - i) / 2;
            if (valid(nums, m, mid))
                j = mid;
            else
                i = mid+1;
        }
        return valid(nums, m, i) ? i : j;
    }
    bool valid(vector<int>& nums, int m, int _sum) {
        for (int cur_sum = 0, i = 0; i < nums.size(); i++) {
            if (nums[i] > _sum) return false;
            if (cur_sum + nums[i] > _sum) {
                cur_sum = 0;
                m--;
                if (m == 0) return false;
            }
            cur_sum += nums[i];
        }
        return true;
    }
};

 

410. Split Array Largest Sum

标签:col   split   IV   vector   tar   solution   ==   return   code   

原文地址:https://www.cnblogs.com/JTechRoad/p/9096227.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!