leetcode 410 二分枚举 + 线性贪心检查是否能符合,时间复杂度O(nlog(sum)) class Solution { public:     bool canSplit(vector<int>& nums, int m, int mid){         // cout << mid << ' ';         long long sum = 0, cnt = 1;         for(int &x: nums){             if(sum + x > mid){                 sum = x;                 ++cnt;                 if(cnt > m) return false;             }else sum += x;         }         return true;     }     int splitArray(vector<int>& nums, int m) {         long long l = 0, r = 0;         for(int &x: nums){             r += x;             if(x > l) l = x;         }         while(l < r){             int mid = l + r >> 1;             // cout << l << ' ' << r << ' ' << mid << endl;             if(canSplit(nums, m, mid)) r = mid;             else l = mid + 1;         }         return r;     } };
点赞 评论

相关推荐

Z_eus:别打招呼直接发你的优势
点赞 评论 收藏
分享
牛客网
牛客网在线编程
牛客网题解
牛客企业服务