二分查找
主要是一些关于二分查找的题目
jump_into_zehe
这个作者很懒,什么都没留下…
展开
-
最长上升子序列
LeetCode 300最长上升子序列给定一个无序的整数数组,找到其中最长上升子序列的长度。示例:输入: [10,9,2,5,3,7,101,18]输出: 4 解释: 最长的上升子序列是 [2,3,7,101],它的长度是 4。说明:可能会有多种最长上升子序列的组合,你只需要输出对应的长度即可。你算法的时间复杂度应该为 O(n2) 。进阶: 你能将算法的时间复杂度降低到 O(n log n) 吗?解法: 动态规划解题思路:因为要求最长的子序列,所以我们可以用动态规划的思想我们定原创 2020-08-04 21:22:27 · 119 阅读 · 0 评论 -
有效括号的嵌套深度
LeetCode 1111有效括号的嵌套深度给你一个「有效括号字符串」 seq,请你将其分成两个不相交的有效括号字符串,A 和 B,并使这两个字符串的深度最小。不相交:每个 seq[i] 只能分给 A 和 B 二者中的一个,不能既属于 A 也属于 B 。A 或 B 中的元素在原字符串中可以不连续。A.length + B.length = seq.length深度最小:max(depth(A), depth(B)) 的可能取值最小。划分方案用一个长度为 seq.leng原创 2020-08-04 18:08:26 · 210 阅读 · 0 评论 -
元素和小于等于阈值的正方形的最大边长
LeetCode 1292元素和小于等于阈值的正方形的最大边长给你一个大小为 m x n 的矩阵 mat 和一个整数阈值 threshold。请你返回元素总和小于或等于阈值的正方形区域的最大边长;如果没有这样的正方形区域,则返回 0 。示例1:输入:mat = [[1,1,3,2,4,3,2],[1,1,3,2,4,3,2],[1,1,3,2,4,3,2]], threshold = 4输出:2解释:总和小于 4 的正方形的最大边长为 2,如图所示。解法1:动态规划解题思路:可以用动原创 2020-08-04 15:30:29 · 200 阅读 · 0 评论 -
寻找峰值
LeetCode寻找峰值峰值元素是指其值大于左右相邻值的元素。给定一个输入数组 nums,其中 nums[i] ≠ nums[i+1],找到峰值元素并返回其索引。数组可能包含多个峰值,在这种情况下,返回任何一个峰值所在位置即可。你可以假设 nums[-1] = nums[n] = -∞。示例 1:输入: nums = [1,2,3,1]输出: 2解释: 3 是峰值元素,你的函数应该返回其索引 2。示例 2:输入: nums = [1,2,1,3,5,6,4]输出: 1 或 5 解原创 2020-08-04 14:27:42 · 121 阅读 · 0 评论 -
在D天内送达包裹的能力
leetCode 1011在D天内送达包裹的能力传送带上的包裹必须在 D 天内从一个港口运送到另一个港口。传送带上的第 i 个包裹的重量为 weights[i]。每一天,我们都会按给出重量的顺序往传送带上装载包裹。我们装载的重量不会超过船的最大运载重量。返回能在 D 天内将传送带上的所有包裹送达的船的最低运载能力。示例 1:输入:weights = [1,2,3,4,5,6,7,8,9,10], D = 5输出:15解释:船舶最低载重 15 就能够在 5 天内送达所有包原创 2020-08-04 12:44:10 · 241 阅读 · 0 评论 -
剑指Offer 53-Ⅱ.0~n-1中缺失的数字
LeetCode剑指Offer 53-Ⅱ.o~n-1中缺失的数字一个长度为n-1的递增排序数组中的所有数字都是唯一的,并且每个数字都在范围0~n-1之内。在范围0~n-1内的n个数字中有且只有一个数字不在该数组中,请找出这个数字。示例 1:输入: [0,1,3]输出: 2示例 2:输入: [0,1,2,3,4,5,6,7,9]输出: 8解法:二分查找解题思路:因为题目要求我们找到0~n-1中缺失的那一个数字,因此我们可以用二分法来找这一个数字,二分的条件为当mid<num原创 2020-08-03 23:01:59 · 115 阅读 · 0 评论 -
寻找重复数
lettCode 287寻找重复数给定一个包含 n + 1 个整数的数组 nums,其数字都在 1 到 n 之间(包括 1 和 n),可知至少存在一个重复的整数。假设只有一个重复的整数,找出这个重复的数。示例 1:输入: [1,3,4,2,2]输出: 2示例 2:输入: [3,1,3,4,2]输出: 3说明:不能更改原数组(假设数组是只读的)。只能使用额外的 O(1) 的空间。时间复杂度小于 O(n2) 。数组中只有一个重复的数字,但它可能不止重原创 2020-08-03 20:05:23 · 101 阅读 · 0 评论 -
面试题17.08. 马戏团人塔
LeetCode面试题 17.08. 马戏团人塔有个马戏团正在设计叠罗汉的表演节目,一个人要站在另一人的肩膀上。出于实际和美观的考虑,在上面的人要比下面的人矮一点且轻一点。已知马戏团每个人的身高和体重,请编写代码计算叠罗汉最多能叠几个人。示例:输入:height = [65,70,56,75,60,68] weight = [100,150,90,190,95,110]输出:6解释:从上往下数,叠罗汉最多能叠 6 层:(56,90), (60,95), (65,100), (68,110), (原创 2020-08-03 16:03:48 · 335 阅读 · 0 评论