二分搜索
1
wdt_
即使上线也匆忙,新版本,愁断肠,orz...
展开
-
【二分】B031_LQ_分巧克力(h/len × w/len 是切分的巧克力数)
儿童节那天有K位小朋友到小明家做客。小明拿出了珍藏的巧克力招待小朋友们。小明一共有N块巧克力,其中第i块是 Hi×WiH_i × W_iHi×Wi 的方格组成的长方形。为了公平起见,小明需要从这 N 块巧克力中切出K块巧克力分给小朋友们。切出的巧克力需要满足:形状是正方形,边长是整数大小相同例如一块6x5的巧克力可以切出6块2x2的巧克力或者2块3x3的巧克力。当然小朋友们都希望得到的巧克力尽可能大,你能帮小明计算出最大的边长是多少么?输入第一行包含两个整数N和K。(1 <原创 2020-08-24 18:47:26 · 213 阅读 · 0 评论 -
【二分】A030_LC_区间移位(贪心)
数轴上有n个闭区间:D1,…,Dn。其中区间Di用一对整数[ai, bi]来描述,满足ai< bi。 已知这些区间的长度之和至少有10000。所以,通过适当的移动这些区间,你总可以使得他们的“并”覆盖 [0, 10000]也就是说[0, 10000]这个区间内的每一个点都落于至少一个区间内。你希望找一个移动方法,使得位移差最大的那个区间的位移量最小。具体来说,假设你将Di移动到 [ai+ci, bi+ci] 这个位置。你希望使得 maxi∣ci∣max_i{|c_i|}maxi∣ci∣ 最原创 2020-08-19 11:24:43 · 167 阅读 · 0 评论 -
【二分】B029_LC_两球之间的磁力(注意向上取整)
在代号为 C-137 的地球上,Rick 发现如果他将两个球放在他新发明的篮子里,它们之间会形成特殊形式的磁力。Rick 有 n 个空的篮子,第 i 个篮子的位置在 position[i] ,Morty 想把 m 个球放到这些篮子里,使得任意两球间 最小磁力 最大。已知两个球如果分别位于 x 和 y ,那么它们之间的磁力为 |x - y|给你一个整数数组 position 和一个整数 m ,请你返回最大化的最小磁力示例 1:输入:position = [1,2,3,4,7], m = 3输出:3原创 2020-08-16 22:01:40 · 197 阅读 · 0 评论 -
【二分】B027_NK_苹果树(二分找符合累加任务的最小索引)
一、Problem牛牛有一个苹果园。又到了一年一度的收获季,牛牛现在要去采摘苹果买给市场的摊贩们。牛牛的果园里面有 n 棵苹果树,第i棵苹果树上有 ai 个果子。牛牛为了保证果子的新鲜程度,每天都会去苹果树上采摘果子。牛牛特意安排一个计划表:计划 m 天去采摘果子。对于第 i 天,它会去所有果树上轮流采摘 bi 个果子。如果对于第 i 天,某棵果树上没有 bi 个果子,那么它只会把当前果树上的果子采摘完。牛牛想知道它每天能供应多少个苹果给市场的摊贩们输入 [10,20,10],[5,原创 2020-08-10 12:08:44 · 227 阅读 · 0 评论 -
【二分】B026_LC_H 指数(二分注意边界 / 桶排序)
一、Problem给定一位研究者论文被引用次数的数组(被引用次数是非负整数)。编写一个方法,计算出研究者的 h 指数。h 指数的定义:h 代表“高引用次数”(high citations),一名科研人员的 h 指数是指他(她)的 (N 篇论文中)总共有 h 篇论文分别被引用了至少 h 次。(其余的 N - h 篇论文每篇被引用次数 不超过 h 次。)例如:某人的 h 指数是 20,这表示他已发表的论文中,每篇被引用了至少 20 次的论文总共有 20 篇输入:citations = [3,0,6,1,转载 2020-08-08 11:22:06 · 123 阅读 · 0 评论 -
【二分】A025_LC_找出第 k 小的距离对(双指针找对数)
一、Problem给定一个整数数组,返回所有数对之间的第 k 个最小距离。一对 (A, B) 的距离被定义为 A 和 B 之间的绝对差值输入:nums = [1,3,1]k = 1输出:0 解释:所有数对如下:(1,3) -> 2(1,1) -> 0(3,1) -> 2因此第 1 个最小距离的数对是 (1,1),它们之间的距离为 0提示:2 <= len(nums) <= 10000.0 <= nums[i] < 1000000.1原创 2020-08-07 12:05:47 · 159 阅读 · 0 评论 -
【二分】B024_LC_供暖器(lower_bound 思想)
一、Problem冬季已经来临。 你的任务是设计一个有固定加热半径的供暖器向所有房屋供暖。现在,给出位于一条水平线上的房屋和供暖器的位置,找到可以覆盖所有房屋的最小加热半径。所以,你的输入将会是房屋和供暖器的位置。你将输出供暖器的最小加热半径。说明:给出的房屋和供暖器的数目是非负数且不会超过 25000。给出的房屋和供暖器的位置均是非负数且不会超过10^9。只要房屋位于供暖器的半径内(包括在边缘上),它就可以得到供暖。所有供暖器都遵循你的半径标准,加热的半径也一样。示例 1:输入: [1原创 2020-08-07 09:51:09 · 106 阅读 · 0 评论 -
【二分】B023_LC_在排序数组中查找元素的第一个和最后一个位置(假二分 / 利用lower_bound思想)
一、Problem给定一个按照升序排列的整数数组 nums,和一个目标值 target。找出给定目标值在数组中的开始位置和结束位置。你的算法时间复杂度必须是 O(log n) 级别。如果数组中不存在目标值,返回 [-1, -1]。输入: nums = [5,7,7,8,8,10], target = 8输出: [3,4]输入: [1],1输出:[0, 0]二、Solution方法一:二分思路最直观的做法是:找到二分找到 tar 之后立刻向左找第一个 tar 和最后一个 tarA原创 2020-08-06 23:10:05 · 140 阅读 · 0 评论 -
【二分】A022_LC_分割数组的最大值(枚举每一份子数组的大小)
一、Problem给定一个非负整数数组和一个整数 m,你需要将这个数组分成 m 个非空的连续子数组。设计一个算法使得这 m 个子数组各自和的最大值最小。注意:数组长度 n 满足以下条件:1 ≤ n ≤ 10001 ≤ m ≤ min(50, n)示例:输入:nums = [7,2,5,10,8]m = 2输出:18解释:一共有四种方法将nums分割为2个子数组。其中最好的方式是将其分为[7,2,5] 和 [10,8],因为此时这两个子数组各自的和的最大值为18,在所有情况原创 2020-07-25 22:16:14 · 162 阅读 · 0 评论 -
【二分】A021_LC_寻找旋转排序数组中的最小值 II(去重)
一、Problem假设按照升序排序的数组在预先未知的某个点上进行了旋转。( 例如,数组 [0,1,2,4,5,6,7] 可能变为 [4,5,6,7,0,1,2] )。请找出其中最小的元素。注意数组中可能存在重复的元素。示例 1:输入: [1,3,5]输出: 1示例 2:输入: [2,2,2,0,1]输出: 0说明:这道题是 寻找旋转排序数组中的最小值 的延伸题目。允许重复会影响算法的时间复杂度吗?会如何影响,为什么?二、Solution方法一:二分思想问题Q:允许重复会原创 2020-07-22 16:16:17 · 177 阅读 · 0 评论 -
【二分】B020_LC_在线选举(ordermap / 造轮子)
一、Problem在选举中,第 i 张票是在时间为 times[i] 时投给 persons[i] 的。现在,我们想要实现下面的查询函数: TopVotedCandidate.q(int t) 将返回在 t 时刻主导选举的候选人的编号。在 t 时刻投出的选票也将被计入我们的查询之中。在平局的情况下,最近获得投票的候选人将会获胜。输入:["TopVotedCandidate","q","q","q","q","q","q"], [[[0,1,1,0,0,1,0],[0,5,10,15,20,25,30原创 2020-07-14 21:19:19 · 1942 阅读 · 0 评论 -
【二分】B019_LC_小张刷题计划(贪婪)
一、Problemn 道题,编号从 0 到 n-1,并计划在 m 天内按照题目编号顺序刷完所有的题目(注意,小张不能用多天完成同一题)。在小张刷题计划中,小张需要用 time[i] 的时间完成编号 i 的题目。此外,小张还可以使用场外求助功能,通过询问他的好朋友小杨题目的解法,可以省去该题的做题时间。为了防止“小张刷题计划”变成“小杨刷题计划”,小张每天最多使用一次求助。我们定义 m 天中做题时间最多的一天耗时为 T(小杨完成的题目不计入做题总时间)。请你帮小张求出最小的 T是多少。输入:time原创 2020-07-03 22:52:05 · 266 阅读 · 0 评论 -
【二分】B018_LC_在 D 天内送达包裹的能力(注意特判)
一、Problem传送带上的包裹必须在 D 天内从一个港口运送到另一个港口。传送带上的第 i 个包裹的重量为 weights[i]。每一天,我们都会按给出重量的顺序往传送带上装载包裹。我们装载的重量不会超过船的最大运载重量。返回能在 D 天内将传送带上的所有包裹送达的船的最低运载能力。输入:weights = [1,2,3,4,5,6,7,8,9,10], D = 5输出:15解释:船舶最低载重 15 就能够在 5 天内送达所有包裹,如下所示:第 1 天:1, 2, 3, 4, 5第 2原创 2020-07-02 20:38:36 · 165 阅读 · 1 评论 -
【二分】C017_LC_比较字符串最小字母出现频次(暴力 / 二分优化)
一、Problem我们来定义一个函数 f(s),其中传入参数 s 是一个非空字符串;该函数的功能是统计 s 中(按字典序比较)最小字母的出现频次。例如,若 s = “dcce”,那么 f(s) = 2,因为最小的字母是 “c”,它出现了 2 次。现在,给你两个字符串数组待查表 queries 和词汇表 words,请你返回一个整数数组 answer 作为答案,其中每个 answer[i] 是满足 f(queries[i]) < f(W) 的词的数目,W 是词汇表 words 中的词。输入:q原创 2020-06-21 20:42:24 · 154 阅读 · 0 评论 -
【二分】B016_LC_制作 m 束花所需的最少天数(枚举时检查)
一、ProblemGiven an integer array bloomDay, an integer m and an integer k.We need to make m bouquets. To make a bouquet, you need to use k adjacent flowers from the garden.The garden consists of n flowers, the ith flower will bloom in the bloomDay[i] and原创 2020-06-14 15:04:18 · 229 阅读 · 0 评论 -
【贪心】C_ACW_018 防晒(排序 | 二分搜索 | 二分图)
一、题目描述有 C 头奶牛进行日光浴,第 i 头奶牛需要 minSPF[i] 到 maxSPF[i] 单位强度之间的阳光。每头奶牛在日光浴前必须涂防晒霜,防晒霜有 L 种,涂上第i种之后,身体接收到的阳光强度就会稳定为 SPF[i],第i种防晒霜有 cover[i] 瓶。求最多可以满足多少头奶牛进行日光浴。输入格式第一行输入整数C和L。接下来的C行,按次序每行输入一头牛的minSPF...原创 2020-04-08 17:55:10 · 285 阅读 · 0 评论 -
【贪心】A_012_计算右侧小于当前元素的个数(暴力 / 二分)
一、题目描述You are given an integer array nums and you have to return a new counts array. The counts array has the property where counts[i] is the number of smaller elements to the right of nums[i].Input...原创 2020-04-07 15:06:57 · 166 阅读 · 0 评论 -
【堆】B005_LC_有序矩阵中第 K 小的元素(归并思想 / 二分优化)
一、题目描述Given a n x n matrix where each of the rows and columns are sorted in ascending order, find the kth smallest element in the matrix.Note that it is the kth smallest element in the sorted orde...原创 2020-02-20 23:55:22 · 203 阅读 · 0 评论 -
【数论】C022_LC_两个数组的交集(双指针 | HashSet | 二分 | 状态记录)
一、题目描述Given two arrays, write a function to compute their intersection.Input: nums1 = [4,9,5], nums2 = [9,4,9,8,4]Output: [9,4]二、题解(1) 双指针 + 排序思路求两个数组的交集需要注意数组元素可能会有重复。所以嵌套遍历两个数组会变得乏力。如何去重就变为...原创 2020-02-09 17:18:36 · 245 阅读 · 0 评论 -
【数学】C020_lc_x的平方根(暴力枚举 | 二分查找 | 牛顿迭代)
一、题目描述实现 int sqrt(int x) 函数。计算并返回 x 的平方根,其中 x 是非负整数。由于返回类型是整数,结果只保留整数的部分,小数部分将被舍去。 输入: 8 输出: 2 说明: 8 的平方根是 2.82842...,由于返回类型是整数,小数部分将被舍去。二、题解(1) 枚举/** * 枚举: * 执行用时 32ms 击败了 5.8% 的java用户...原创 2020-01-14 12:09:08 · 268 阅读 · 0 评论 -
【数学】C013_LC_有效的完全平方数(暴力枚举 / 二分查找)
一、题目描述Given a positive integer num, write a function which returns True if num is a perfect square else False.Note: Do not use any built-in library function such as sqrt.Input: 16Output: true...原创 2020-01-12 23:28:42 · 215 阅读 · 0 评论 -
【数论】C010_LC_第一个错误的版本(穷举 | 二分查找)
一、题目You are a product manager and currently leading a team to develop a new product. Unfortunately, the latest version of your product fails the quality check. Since each version is developed based ...原创 2019-09-13 16:35:18 · 157 阅读 · 0 评论 -
【滑窗】B001_LC_ 长度最小的子数组(穷举 / 前缀和数组 / 滑动窗口 / 二分)
一、题目给定一个含有 n 个正整数的数组和一个正整数 s ,找出该数组中满足其和 ≥ s 的长度最小的连续子数组。如果不存在符合条件的连续子数组,返回 0。示例:输入: s = 7, nums = [2,3,1,2,4,3]输出: 2解释: 子数组 [4,3] 是该条件下的长度最小的连续子数组。二、分析思路一暴力法:把所有可能的子数组求和并更新 ans ,直到我们找到最优子数组...原创 2019-08-19 02:08:11 · 200 阅读 · 0 评论 -
【数学】B076_LC_爱吃香蕉的珂珂(二分 + 向上取整)
一、ProblemKoko loves to eat bananas. There are N piles of bananas, the i-th pile has piles[i] bananas. The guards have gone and will come back in H hours.Koko can decide her bananas-per-hour eating speed of K. Each hour, she chooses some pile of banana原创 2020-06-03 10:51:07 · 211 阅读 · 0 评论 -
【数组】B076_LC_转变数组后最接近目标值的数组和(暴力 / 二分优化)
一、ProblemGiven an integer array arr and a target value target, return the integer value such that when we change all the integers larger than value in the given array to be equal to value, the sum of the array gets as close as possible (in absolute differ原创 2020-06-06 15:05:32 · 193 阅读 · 0 评论 -
【数学】B075_LC_使结果不超过阈值的最小除数(二分)
一、ProblemGiven an array of integers nums and an integer threshold, we will choose a positive integer divisor and divide all the array by it and sum the result of the division. Find the smallest divisor such that the result mentioned above is less than or原创 2020-06-03 10:01:32 · 198 阅读 · 0 评论 -
【数组】B072_LC_寻找重复数(二分思想)
一、ProblemGiven an array nums containing n + 1 integers where each integer is between 1 and n (inclusive), prove that at least one duplicate number must exist. Assume that there is only one duplicate number, find the duplicate one.Input: [1,3,4,2,2]Outpu原创 2020-05-27 08:20:13 · 157 阅读 · 0 评论 -
【回溯】C058_NK_牛牛的三角形(选数 / 二分 + 滑动窗口)
一、Problem牛牛有一个数组长度大小为 n,数组中有 n 个正整数。现在牛牛请你从其中选出三个元素(注意选择元素的下标不能相同,但是其值可以相同)组成一个三角形。无法做到,请输出一行一个字符串 “No solution”,反之请输出这三个元素的值。如果有多种组成三角形的元素组合,你可以输出任意一种输入描述:第一行是一个正整数 n,(3≤n≤102)n,(3\leq n \leq 10^2)n,(3≤n≤102) 表示数组的元素个数。接下来一行输入n个正整数 aia_iai 表示每个数组元素原创 2020-05-08 21:55:05 · 880 阅读 · 0 评论 -
【贪心】B033_LQ_切香肠(暴力 / 二分)
一、Problem窗外肉价飞涨,屋里灶台微响。便当店老板在沉思中苦恼: 现在店里的存货还有nn条特制香肠,长度分别为 LiL_iLi如果能从它们中切割出 k 条长度相同的香肠的话,就能应付突如其来的奇怪的订单你能帮这位老板计算一下这 k 条香肠每条最长能有多长吗?(答案保留小数点后两位,规定1 单位长度的香肠最多可以切割成 100 份)输入3 43 5 4输出2.50样...原创 2020-05-04 22:58:57 · 358 阅读 · 0 评论