文章目录

  • 1. 题目
  • 2. 解题

1. 题目

描述

给你一个整数数组 nums 和一个正整数 threshold ,你需要选择一个正整数作为除数,然后将数组里每个数都除以它,并对除法结果求和

请你找出能够使上述结果小于等于阈值 threshold 的除数中 最小 的那个

每个数除以除数后都向上取整,比方说 7/3 = 3 , 10/2 = 5 。

题目保证一定有解。
1 <= nums.length <= 5 * 10^4
1 <= nums[i] <= 10^6
nums.length <= threshold <= 10^6示例 1:
输入:nums = [1,2,5,9], threshold = 6
输出:5
解释:如果除数为 1 ,我们可以得到和为 17 (1+2+5+9)。
如果除数为 4 ,我们可以得到和为 7 (1+1+2+3) 。
如果除数为 5 ,和为 5 (1+1+1+2)。示例 2:
输入:nums = [2,3,5,7,11], threshold = 11
输出:3示例 3:
输入:nums = [19], threshold = 5
输出:4

https://www.lintcode.com/problem/find-the-smallest-divisor-given-a-threshold/description

2. 解题

类似题目:
LeetCode 410. 分割数组的最大值(极小极大化 二分查找)
LeetCode 668. 乘法表中第k小的数(二分查找)
LeetCode 774. 最小化去加油站的最大距离(极小极大化 二分查找)
LeetCode 875. 爱吃香蕉的珂珂(二分查找)
LeetCode LCP 12. 小张刷题计划(二分查找)
LeetCode 1011. 在 D 天内送达包裹的能力(二分查找)
LeetCode 1102. 得分最高的路径(优先队列BFS/极大极小化 二分查找)
LeetCode 1062. 最长重复子串(二分查找)
LeetCode 5438. 制作 m 束花所需的最少天数(二分查找)
LeetCode 5489. 两球之间的磁力(极小极大化 二分查找)
LeetCode 5548. 最小体力消耗路径(DFS + 二分查找)

  • 二分查找答案,除数变大,和变小或不变,有单调性
class Solution {public:/*** @param nums: an array of integers* @param threshold: an integer* @return: return the smallest divisor*/int smallestDivisor(vector<int> &nums, int threshold) {// write your code hereint l = 1, r = INT_MAX, mid, ans;while(l <= r){mid = l+((r-l)>>1);if(sumok(nums, mid, threshold)){ans = mid;r = mid-1;}elsel = mid+1;}return ans;}bool sumok(vector<int>& a, int div, int threshold){long long sum = 0;for(auto n : a){sum += ceil(n/double(div));if(sum > threshold)return false;}return true;}
};

53ms C++


我的CSDN博客地址 https://michael.blog.csdn.net/

长按或扫码关注我的公众号(Michael阿明),一起加油、一起学习进步!

LintCode 1816. 使结果不超过阈值的最小除数(二分查找)相关推荐

  1. LeetCode 1283. 使结果不超过阈值的最小除数(二分查找)

    1. 题目 给你一个整数数组 nums 和一个正整数 threshold ,你需要选择一个正整数作为除数,然后将数组里每个数都除以它,并对除法结果求和. 请你找出能够使上述结果小于等于阈值 thres ...

  2. DELL服务器,CPU一直会提示温度超过阈值。针对CPU temperature is greater than the upper crit

    1.从日志中看到idrac和bios版本还没升级到最新,可能之前升级没成功,需要再升级下idrac和bios版本至最新: 下载地址: 最新IDRAC固件 https://dl.dell.com/FOL ...

  3. matlab的sinxx,用MATLAB程序编程:分析方程f(x)=sinx-x/2=0正根的分布情况,并用二分法求正根近似值,使误差不超过0.01....

    在来matlab里面输入edit fun.m:在弹出的窗口自输入bai以下内du容:function f=fun(x,y):f=x.^2+sin(x.*y)+2*y;:保存一下zhi.最后在matla ...

  4. LeetCode 363. 矩形区域不超过 K 的最大数值和(DP+set二分查找)

    1. 题目 给定一个非空二维矩阵 matrix 和一个整数 k,找到这个矩阵内部不大于 k 的最大矩形和. 示例: 输入: matrix = [[1,0,1],[0,-2,3]], k = 2 输出: ...

  5. LintCode 1753. 写作业(二分查找)

    1. 题目 n个人,他们每个人需要独立做 m 份作业. 第 i 份作业需要花费 cost[i] 的时间.由于每个人的空闲时间不同,第 i 个人有 val[i] 的时间,这代表他做作业的总时间不会超过 ...

  6. lintcode刷题 14. 二分查找,迭代和二分法Python实现

    14. 二分查找 描述 给定一个排序的整数数组(升序)和一个要查找的整数target,用O(logn)的时间查找到target第一次出现的下标(从0开始),如果target不存在于数组中,返回-1. ...

  7. 每天一个小程序——第 0005 题:批量修改图片尺寸,使之不超过 iPhone5 分辨率

    *PIL为第三方库,需要自行安装. # -*- coding: utf-8 -*- """ 第 0005 题:你有一个目录,装了很多照片,把它们的尺寸变成都不大于 iPh ...

  8. python阈值计算_python – 在numpy中计算超过阈值的数组值的最快方法

    使用cython可能是一个不错的选择. import numpy as np cimport numpy as np cimport cython from cython.parallel impor ...

  9. 如何设置U盘存储使其存储超过4G的文件

    1.首先熟悉u盘的文件系统是FAT32 .NTFS.EXFAT三种组成: 2.介绍三者各自的特点: 1)FAT32不能存储大于4G的单个文件: 2)NTFS无上述限制,但是由于读写过于频繁不适合U盘使 ...

最新文章

  1. PHP开发工具 zend studio
  2. 如何用RHEL System Role把Postfix安装和配置自动化?
  3. transformer机制讲解_【核心代码解读】Transformer-XL
  4. 基于模板的通用代码生成器LKGenerator(二)-使用时的关键步骤,注意事项及实例
  5. Valgrind 使用简单说明-转
  6. c语言中L''作用,L/C问题: 请问L/C上的49:Confirmation Instruction 有什么作用啊[1]
  7. linux下分析prn,Linux下echo命令详解
  8. Android 计算视频的fps
  9. 设置电脑的背景颜色为保护色
  10. 360 vs QQ 有意思的大战
  11. 软件测试度量分析,软件测试缺陷度量分析
  12. [足式机器人]Part3机构运动微分几何学分析与综合Ch02-3 平面机构离散运动鞍点综合——【读书笔记】
  13. python软件可以申请著作权吗_什么样的软件可以申请软件著作权?
  14. 如何在 Facebook 上实现高效社交营销
  15. c++游戏服务器框架
  16. IDEA2021 event log提示 打开/关闭
  17. 物联网卡能使用多久?能永久使用吗?
  18. 牛客挑战赛42 B.小睿睿的伤害(树上启发式合并)
  19. SSCI(社会科学引文索引)介绍
  20. 抖音批量全自动删除作品JS代码教程

热门文章

  1. 苹果应用上架,一些信息的勾选(2017年4月27日)
  2. php实现服务器文件同步,PHPstorm配置同步服务器文件
  3. 华为鸿蒙消费者,王成录谈鸿蒙挑战和华为消费者业务崛起
  4. [leetcode](4.21)4. 有效子数组的数目
  5. vue项目创建,redis列表字典操作,django用redis的第二种方法
  6. Ogg入门--基本命令
  7. Java程序员应该了解的10个设计原则
  8. ionic拍照,从相册选择功能
  9. How to Avoid Producing Legacy Code at the Speed of Typing
  10. Sicily-1063