1. 题目

2. 解答

此题目为 今日头条 2018 AI Camp 5 月 26 日在线笔试编程题第二道——最小分割分数。


class Solution {public:// 若分割数组的最大值为 value,判断能否进行划分bool cansplit(vector<int>& nums, int value, int m){  int len = nums.size();int i = 0;int sum = 0;int split_count = 0; // 分割次数// 依次往后求和,若和小于等于 value,则继续加;// 若和大于 value,则分割次数加 1,从当前位置开始将和清零,重新开始for (i = 0; i < len; i++){if (sum + nums[i] <= value){sum += nums[i];}else{split_count++;sum = nums[i];}if (split_count == m)  // 分割次数超出 m, 不满足划分{return false;}}return true;           }int splitArray(vector<int>& nums, int m) {int len = nums.size();int i = 0;    // 分割数组的最大值介于数组的最大元素和数组所有元素的和之间int max = nums[0];int sum = 0;for (i = 0; i < len; i++){if (nums[i] > max){max = nums[i];}sum += nums[i];}int left = max;int right = sum;int mid = 0;while(left < right){mid = left + (right - left) / 2;if (cansplit(nums, mid, m)) // 能划分,继续找有没有更小的值{right = mid; //不减是因为无法确保减一之后的数是否满足划分} else // 不能划分,增大数值继续寻找{left = mid + 1;}}return left; // 最终 left = right 结束,left 值就是所求}
};复制代码

获取更多精彩,请关注「seniusen」!

LeetCode 410——分割数组的最大值相关推荐

  1. leetcode 410. 分割数组的最大值(二分法)

    1. 题目描述 给定一个非负整数数组和一个整数 m,你需要将这个数组分成 m 个非空的连续子数组.设计一个算法使得这 m 个子数组各自和的最大值最小.注意: 数组长度 n 满足以下条件:1 ≤ n ≤ ...

  2. LeetCode 410. 分割数组的最大值(极小极大化 二分查找 / DP)

    文章目录 1. 题目 2. 解题 2.1 二分查找 2.2 DP 1. 题目 给定一个非负整数数组和一个整数 m,你需要将这个数组分成 m 个非空的连续子数组. 设计一个算法使得这 m 个子数组各自和 ...

  3. Leetcode 410.分割数组的最大值(最优解是二分法)

    Time: 20190904 Type: Hard, DP 题目描述 给定一个非负整数数组和一个整数 m,你需要将这个数组分成 m 个非空的连续子数组.设计一个算法使得这 m 个子数组各自和的最大值最 ...

  4. LeetCode 410. 分割数组的最大值

    题目描述: 给定一个非负整数数组和一个整数 m,你需要将这个数组分成 m 个非空的连续子数组.设计一个算法使得这 m 个子数组各自和的最大值最小. 注意: 数组长度 n 满足以下条件: 1 ≤ n ≤ ...

  5. 410. 分割数组的最大值

    题解: 链接:https://leetcode-cn.com/problems/split-array-largest-sum/ 下面这种情况是dfs是超时的,有时间加一下记忆化 class Solu ...

  6. 四边形不等式技巧——分割数组的最大值(画家问题)

    题目 给定一个整型数组arr,数组中的每个值都为正数,表示完成一幅画作需要的时间,再给定一个整数num,表示画匠的数量,每个画匠只能画连在一起的画作.所有的画家并行工作,请返回完成所有的画作需要的最少 ...

  7. 7、leetcode410 分割数组的最大值

    leetcode410 分割数组的最大值 给定一个非负整数数组 nums 和一个整数 m ,你需要将这个数组分成 m 个非空的连续子数组. 设计一个算法使得这 m 个子数组各自和的最大值最小. 示例 ...

  8. LeetCode 659. 分割数组为连续子序列

    LeetCode 659. 分割数组为连续子序列 回顾 根据题意,每个元素只会涉及两种情况: 已经存在nums[i]-1结尾的序列,我们把nums[i]接到之前的某个序列后. 尝试以nums[i]为头 ...

  9. 分割数组的最大值—leetcode410

    给定一个非负整数数组和一个整数 m,你需要将这个数组分成 m 个非空的连续子数组.设计一个算法使得这 m 个子数组各自和的最大值最小. 注意: 数组长度 n 满足以下条件: 1 ≤ n ≤ 1000 ...

最新文章

  1. 我是这么使用axios的
  2. 一個简单的okhttp访问网络的例子
  3. 如何判断链表是否有环_如何快速判断气门油封是否漏油?
  4. 高仿精仿手机版QQ空间应用源码
  5. Android小数和整数相互转换
  6. maven如何修改本地仓库与中央仓库
  7. php 字符串打散为数组,用逗号分隔出数组
  8. C#使用CLR/C++的DLL间接调用Native C++的DLL
  9. 小白必须懂的MongoDB的十大总结
  10. netbeans基于mysql学生信息_学生信息管理系统的设计与实现(NetBeans IDE,MySQL)
  11. html5播放器占用带宽情况,分享|用 bmon 查看网络带宽使用情况
  12. js日期操作,某天的N天后,一个月后的日期
  13. Mysql优化系列(1)--Innodb引擎下mysql自身配置优化
  14. 小D课堂-SpringBoot 2.x微信支付在线教育网站项目实战_2-6.Mysql逆向工程效率神器之使用IDE自动生成Java实体类...
  15. 企业微信如何快速共享打印
  16. 传播正能量——《海南英才》阅读的读后感2200字
  17. 嵌入式的汉字原来是这样显示的?
  18. BINKS 502375润滑脂
  19. Android Gradle Composing builds 管理三方依赖
  20. PTA基础编程题目集 7-20 打印九九口诀表 (15分)

热门文章

  1. 01初识鸿蒙_移动通讯技术的发展
  2. 计算机函数select,请问关于select函数的操作程序?
  3. [AT2567] [arc074_c] RGB Sequence
  4. SVG 图像入门教程
  5. [js高手之路]原型对象(prototype)与原型链相关属性与方法详解
  6. 【bzoj2521】[Shoi2010]最小生成树 网络流最小割
  7. SSO 中间件 kisso
  8. SQL Server调优系列玩转篇三(利用索引提示(Hint)引导语句最大优化运行)
  9. silverlight导出excel
  10. Sharepoint学习笔记---SPList--创建一个带有Lookup字段的List