![](https://img-blog.csdnimg.cn/20201014180756925.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
二分查找
LeetCode 题目,不一定是最好的解法,但力求简洁、易懂
Rock在学习
这个作者很懒,什么都没留下…
展开
-
二分查找刷题目录
名称力扣地址难度标签35. 搜索插入位置(简单)(LCR 068)https://leetcode.cn/problems/search-insert-position/☆☆二分查找852. 山脉数组的峰顶索引(中等)(LCR 069)https://leetcode.cn/problems/peak-index-in-a-mountain-array/☆☆二分查找540. 有序数组中的单一元素(LCR 070)https://leetcode.cn/pro原创 2023-11-19 09:06:14 · 66 阅读 · 0 评论 -
410. 分割数组的最大值(困难)
给定一个非负整数数组 nums 和一个整数 k ,你需要将这个数组分成 k 个非空的连续子数组。其中最好的方式是将其分为 [7,2,5] 和 [10,8]。因为此时这两个子数组各自的和的最大值为18,在所有情况中最小。输入:nums = [7,2,5,10,8], k = 2。设计一个算法使得这 k 个子数组各自和的最大值最小。一共有四种方法将 nums 分割为 2 个子数组。原创 2023-12-09 15:36:16 · 304 阅读 · 0 评论 -
278. 第一个错误的版本(简单)
你可以通过调用 bool isBadVersion(version) 接口来判断版本号 version 是否在单元测试中出错。实现一个函数来查找第一个错误的版本。你是产品经理,目前正在带领一个团队开发新的产品。不幸的是,你的产品的最新版本没有通过质量检测。由于每个版本都是基于之前的版本开发的,所以错误的版本之后的所有版本都是错的。, n],你想找出导致之后所有版本出错的第一个错误的版本。调用 isBadVersion(4) -> true。输入:n = 5, bad = 4。所以,4 是第一个错误的版本。原创 2023-12-09 15:35:01 · 350 阅读 · 0 评论 -
33. 搜索旋转排序数组(中等)
在传递给函数之前,nums 在预先未知的某个下标 k(0 <= k < nums.length)上进行了 旋转,使数组变为 [nums[k], nums[k+1], …, nums[n-1], nums[0], nums[1], …, nums[k-1]](下标 从 0 开始 计数)。例如, [0,1,2,4,5,6,7] 在下标 3 处经旋转后可能变为 [4,5,6,7,0,1,2]。输入:nums = [4,5,6,7,0,1,2], target = 0。原创 2023-11-26 14:53:02 · 363 阅读 · 0 评论 -
153. 寻找旋转排序数组中的最小值(中等)
注意,数组 [a[0], a[1], a[2], …, a[n-1]] 旋转一次 的结果为数组 [a[n-1], a[0], a[1], a[2], …, a[n-2]]。已知一个长度为 n 的数组,预先按照升序排列,经由 1 到 n 次 旋转 后,得到输入数组。给你一个元素值 互不相同 的数组 nums ,它原来是一个升序排列的数组,并按上述情形进行了多次旋转。解释:原数组为 [1,2,3,4,5] ,旋转 3 次得到输入数组。输入:nums = [3,4,5,1,2]原创 2023-11-26 14:50:35 · 331 阅读 · 0 评论 -
162. 寻找峰值(中等)
给你一个整数数组 nums,找到峰值元素并返回其索引。数组可能包含多个峰值,在这种情况下,返回 任何一个峰值 所在位置即可。你可以假设 nums[-1] = nums[n] = -∞。你必须实现时间复杂度为 O(log n) 的算法来解决此问题。解释:3 是峰值元素,你的函数应该返回其索引 2。峰值元素是指其值严格大于左右相邻值的元素。输入:nums = [1,2,3,1]原创 2023-11-26 14:48:06 · 360 阅读 · 0 评论 -
852. 山脉数组的峰顶索引(中等)(LCR 069)
给你由整数组成的山脉数组 arr ,返回满足 arr[0] < arr[1] < …arr[i - 1] < arr[i] > arr[i + 1] > …> arr[arr.length - 1] 的下标 i。你必须设计并实现时间复杂度为 O(log(n)) 的解决方案。输入:arr = [0,1,0]原创 2023-11-26 14:42:44 · 354 阅读 · 0 评论 -
1011. 在 D 天内送达包裹的能力(中等)
请注意,货物必须按照给定的顺序装运,因此使用载重能力为 14 的船舶并将包装分成 (2, 3, 4, 5), (1, 6, 7), (8), (9), (10) 是不允许的。我们装载的重量不会超过船的最大运载重量。输入:weights = [1,2,3,4,5,6,7,8,9,10], days = 5。输入:weights = [3,2,2,4,1,4], days = 3。第 1 天:1, 2, 3, 4, 5。第 2 天:6, 7。第 1 天:3, 2。第 2 天:2, 4。第 3 天:1, 4。原创 2023-11-09 21:56:54 · 39 阅读 · 0 评论 -
658. 找到 K 个最接近的元素(中等)
给定一个 排序好 的数组 arr ,两个整数 k 和 x ,从数组中找到最靠近 x(两数之差最小)的 k 个数。返回的结果必须要是按升序排好的。输入:arr = [1,2,3,4,5], k = 4, x = -1。输入:arr = [1,2,3,4,5], k = 4, x = 3。|a - x| == |b - x| 且 a < b。|a - x| < |b - x| 或者。输出:[1,2,3,4]输出:[1,2,3,4]原创 2023-11-09 21:44:46 · 46 阅读 · 0 评论 -
240. 搜索二维矩阵 II(中等)
输入:matrix = [[1,4,7,11,15],[2,5,8,12,19],[3,6,9,16,22],[10,13,14,17,24],[18,21,23,26,30]], target = 20。输入:matrix = [[1,4,7,11,15],[2,5,8,12,19],[3,6,9,16,22],[10,13,14,17,24],[18,21,23,26,30]], target = 5。编写一个高效的算法来搜索 m x n 矩阵 matrix 中的一个目标值 target。原创 2023-11-05 16:32:19 · 27 阅读 · 0 评论 -
74. 搜索二维矩阵(中等)
输入:matrix = [[1,3,5,7],[10,11,16,20],[23,30,34,60]], target = 13。输入:matrix = [[1,3,5,7],[10,11,16,20],[23,30,34,60]], target = 3。原创 2023-11-05 16:26:58 · 127 阅读 · 0 评论 -
367. 有效的完全平方数(简单)
完全平方数 是一个可以写成某个整数的平方的整数。换句话说,它可以写成某个整数和自身的乘积。不能使用任何内置的库函数,如 sqrt。给你一个正整数 num。如果 num 是一个完全平方数,则返回 true ,否则返回 false。解释:返回 false ,因为 3.742 * 3.742 = 14 但 3.742 不是一个整数。解释:返回 true ,因为 4 * 4 = 16 且 4 是一个整数。输入:num = 16。输入:num = 14。原创 2023-11-04 16:19:18 · 32 阅读 · 0 评论 -
34. 在排序数组中查找元素的第一个和最后一个位置(中等)
给你一个按照非递减顺序排列的整数数组 nums,和一个目标值 target。请你找出给定目标值在数组中的开始位置和结束位置。如果数组中不存在目标值 target,返回 [-1, -1]。你必须设计并实现时间复杂度为 O(log n) 的算法解决此问题。输入:nums = [5,7,7,8,8,10], target = 8。输入:nums = [5,7,7,8,8,10], target = 6。输出:[-1,-1]原创 2023-11-04 15:57:22 · 48 阅读 · 0 评论 -
704. 二分查找(简单)
给定一个 n 个元素有序的(升序)整型数组 nums 和一个目标值 target ,写一个函数搜索 nums 中的 target,如果目标值存在返回下标,否则返回 -1。输入: nums = [-1,0,3,5,9,12], target = 9。输入: nums = [-1,0,3,5,9,12], target = 2。解释: 9 出现在 nums 中并且下标为 4。解释: 2 不存在 nums 中因此返回 -1。原创 2023-11-04 15:32:02 · 47 阅读 · 0 评论 -
875. 爱吃香蕉的珂珂(中等)(LCR 073)
珂珂可以决定她吃香蕉的速度 k (单位:根/小时)。每个小时,她将会选择一堆香蕉,从中吃掉 k 根。如果这堆香蕉少于 k 根,她将吃掉这堆的所有香蕉,然后这一小时内不会再吃更多的香蕉。这里有 n 堆香蕉,第 i 堆中有 piles[i] 根香蕉。返回她可以在 h 小时内吃掉所有香蕉的最小速度 k(k 为整数)。输入:piles = [30,11,23,4,20], h = 5。输入:piles = [3,6,7,11], h = 8。珂珂喜欢慢慢吃,但仍然想在警卫回来前吃掉所有的香蕉。原创 2023-11-09 22:10:58 · 32 阅读 · 0 评论 -
69. x 的平方根(简单)(LCR 072)
注意:不允许使用任何内置指数函数和算符,例如 pow(x, 0.5) 或者 x ** 0.5。解释:8 的算术平方根是 2.82842…, 由于返回类型是整数,小数部分将被舍去。由于返回类型是整数,结果只保留 整数部分 ,小数部分将被 舍去。给你一个非负整数 x ,计算并返回 x 的 算术平方根。原创 2023-11-04 16:14:53 · 55 阅读 · 0 评论 -
35. 搜索插入位置(简单)(LCR 068)
给定一个排序数组和一个目标值,在数组中找到目标值,并返回其索引。如果目标值不存在于数组中,返回它将会被按顺序插入的位置。请必须使用时间复杂度为 O(log n) 的算法。输入: nums = [1,3,5,6], target = 5。输入: nums = [1,3,5,6], target = 2。原创 2023-11-04 15:51:00 · 72 阅读 · 0 评论 -
540. 有序数组中的单一元素(LCR 070)
给你一个仅由整数组成的有序数组,其中每个元素都会出现两次,唯有一个数只会出现一次。你设计的解决方案必须满足 O(log n) 时间复杂度和 O(1) 空间复杂度。输入: nums = [1,1,2,3,3,4,4,8,8]请你找出并返回只出现一次的那个数。原创 2023-11-19 09:16:21 · 29 阅读 · 0 评论