企业建设网站哪家好,抖音电商官网,p2p网站如何建设,网页设计师培训机构费用价格多少目录 题目解法 题目
给定一个非负整数数组 nums 和一个整数 k #xff0c;你需要将这个数组分成 k 个非空的连续子数组#xff0c;使得这 k 个子数组各自和的最大值 最小。
返回分割后最小的和的最大值。
子数组 是数组中连续的部份。
解法
int splitArray(vectorin… 目录 题目解法 题目
给定一个非负整数数组 nums 和一个整数 k 你需要将这个数组分成 k 个非空的连续子数组使得这 k 个子数组各自和的最大值 最小。
返回分割后最小的和的最大值。
子数组 是数组中连续的部份。
解法
int splitArray(vectorint nums, int m) {long l nums[0], h 0;//int类型在这里不合适因为h可能会超过int类型能表示的最大值for (auto i : nums){h i;l l i ? l : i;}while (lh){long mid (l h) / 2;long temp 0;int cnt 1;//初始值必须为1for(auto i:nums){temp i;if(tempmid){temp i;cnt;}}if(cntm)l mid 1;elseh mid;}return l;} 不仅可以查找数组索引还可以查找和的范围这就是需要到sum里面去查找只要这个数在这个范围内就一定能够查找到。