Leetcode 二分查找
文章平均质量分 79
Leetcode 二分查找题目
努利!奋斗!
这个作者很懒,什么都没留下…
展开
-
Leetcode 1268. Search Suggestions System
leetcode原创 2022-07-27 13:46:02 · 1493 阅读 · 0 评论 -
Leetcode 1146. Snapshot Array
leetcode原创 2022-07-08 11:47:13 · 220 阅读 · 0 评论 -
Leetcode 2250. Count Number of Rectangles Containing Each Point
题目解法:二分搜索这道题目的关键在于利用这些长方形的长宽范围。想到二分搜索是很容易的,问题在于如何搜索。阶段1:一开始想到的解法是通过长方形的长度和宽度分别进行二分搜索,但是这样的想法是不对的。这种想法是对长方形拷贝两份,一份按照长度排序,一份按照宽度排序,然后分别找长度和宽度的下边界,从两个下边界的最小值作为某一个点的答案,但是这样的想法很容易举出反例,比如如果长方形list是:[[1,2],[100,3],[4,8],[200,1],[400,1]],可以发现这么做是不对的,所以一个长方形的原创 2022-05-08 08:17:59 · 162 阅读 · 0 评论 -
Leetcode 4. Median of Two Sorted Arrays (python+cpp)
题目解法1:双指针版本一:time complexity O(m+n),space complexity O(m+n)class Solution {public: double findMedianSortedArrays(vector<int>& nums1, vector<int>& nums2) { int m = nums1.size(), n = nums2.size(); int p1 = 0, p2 =原创 2020-12-26 08:19:23 · 157 阅读 · 1 评论 -
力扣 16.06. 最小差
题目题目链接:https://leetcode-cn.com/problems/smallest-difference-lcci/解法1:排序+双指针class Solution: def smallestDifference(self, a: List[int], b: List[int]) -> int: a.sort() b.sort() p1 = p2 = 0 ans = float('inf')原创 2020-12-19 02:55:34 · 168 阅读 · 1 评论 -
Leetcode 1438. Longest Continuous Subarray With Absolute Diff Less Than or Equal to Limit (python)
题目解法1:二分判定+sliding window由于所求的这个最大长度一定唯一而且会在连续的整数中产生,所以可以用二分判定选取一个特定长度,判断是否存在特定长度的subarray符合条件对于每次判定,使用sliding window的方法,所以每次判定复杂度O(n)总的复杂度O(nlogn)class Solution: def longestSubarray(self, nums: List[int], limit: int) -> int: n = le原创 2020-11-23 08:56:28 · 363 阅读 · 0 评论 -
Leetcode 74. Search a 2D Matrix (python+cpp)
题目解法:二分搜索可以根据大小关系直接降成一维,然后二分搜索class Solution: def searchMatrix(self, matrix: List[List[int]], target: int) -> bool: if not matrix or not matrix[0]: return False arr = [] for row in matrix: arr += ro原创 2020-11-18 14:30:06 · 141 阅读 · 0 评论 -
1482. Minimum Number of Days to Make m Bouquets (python+cpp)
题目解法:二分判定这道题关键在于想到用二分判定去做。因为假设m天能够成功的话,那么大于m的天数一定也是可以的。反过来说,m天不可以,那么小于m的天数一定都不可以,这样子其实我们只需要去找False和True的分界线即可。关于每次判定,相当于从一个固定的序列判断是否成功,很简单的O(n)就可以做。所以总体复杂度是O(nlogn)python版本class Solution: def minDays(self, bloomDay: List[int], m: int, k: int) -&g原创 2020-11-16 12:43:31 · 250 阅读 · 0 评论 -
Leetcode 二分判定类题目 (python)
前言:一般求min(max)或者max(min)类题目都可以用二分判定来求解1552. Magnetic Force Between Two Balls解法:class Solution: def maxDistance(self, position: List[int], m: int) -> int: # 二分判定 # 二分搜索,每次二分到的值X,判断能不能取m个位置,这m个位置值之间两两的差绝对值的最小值大于这个X # 单次判定的原创 2020-11-01 05:52:33 · 189 阅读 · 0 评论 -
二分搜索总结
对于二分搜索,一共有四种常见的写法,左开右闭,左闭右开,左开右开,左闭右闭。实际上只要透彻的理解一种其他的就应该也能够明白。首先来讲什么是闭和开。对于二分搜索,general的来说我们会有一个check函数,这个check函数决定了下一步的搜索往哪里走,而且一定是能确定往哪一边走才是严格意义上的二分。这边的闭对应的是check函数的结果为True,而开相反的对应的就是False。那么对于左闭右开,意味着对left指针所指的元素所对应的check结果始终会是True,相反的right指针对应的始终是Fals原创 2020-09-24 14:40:41 · 298 阅读 · 0 评论 -
Leetcode 540. Single Element in a Sorted Array(python+cpp)
Leetcode 540. Single Element in a Sorted Array题目解析:题目解析:这题主要是考虑怎么用二分法。如果能够想到二分之后,左右两边的长度奇偶性有什么规律的话题目就很好做了,规律是,包含单个元素的一边元素个数肯定是奇数。具体如下:首先找到中间位置,判断右半边元素个数为奇数还是偶数,同时判断当前元素与前一个相同还是与后一个相同将这两个判断条件的四种...原创 2020-04-24 11:54:52 · 230 阅读 · 0 评论 -
Leetcode Find Minimum in Rotated Sorted Array (python+cpp)
Leetcode Find Minimum in Rotated Sorted Array题目解法1:brutal force解法2:二分法题目解法1:brutal force很惊讶brutal force的O(N)解法居然能过python代码如下:class Solution: def findMin(self, nums: List[int]) -> int: ...原创 2020-04-19 12:21:53 · 256 阅读 · 0 评论 -
Leetcode 33. Search in Rotated Sorted Array (python+cpp)
Leetcode 33. Search in Rotated Sorted Array题目解法:二分查找题目解法:二分查找直接上leetcode官方解释吧,挺清楚的python代码:class Solution: def search(self, nums: List[int], target: int) -> int: start, end = 0,...原创 2020-04-16 11:55:00 · 153 阅读 · 0 评论 -
Leetcode 240. Search a 2D Matrix II (python+cpp)
Leetcode 240. Search a 2D Matrix II题目解法1:按行二分搜索解法2:题目这道题目有很多不同的解法,我这边的两种是leetcode官方解答中没有出现的,个人认为这两种方法比较直观也在面试中容易想到解法1:按行二分搜索由于每一行每一列都是排好序的,所以可以按行或者按列进行二分搜索,时间复杂度为O(mlog(n))或者O(nlog(m)),这边下面写了按行二分的方法,按列也一样class Solution: def searchMatrix(self, mat原创 2020-06-17 09:16:20 · 361 阅读 · 0 评论 -
Leetcode 81. Search in Rotated Sorted Array II (python)
Leetcode 81. Search in Rotated Sorted Array II题目解法:二分查找题目解法:二分查找这题跟33非常类似,唯一需要注意的是,这边有重复数字存在。,因为数组存在重复数字,如果中点和左端的数字相同,我们并不能确定是左区间全部 相同,还是右区间完全相同。在这种情况下,我们可以简单地将左端点右移一位,然后继续进行 二分查找。其余部分跟33一模一样即可...原创 2020-04-16 11:59:09 · 257 阅读 · 0 评论 -
Leetcode 34. Find First and Last Position of Element in Sorted Array (python+cpp)
Leetcode 34. Find First and Last Position of Element in Sorted Array题目解法:二分查找题目解法:二分查找思路非常简单:二分法定位到一个和target相等的位置因为是排好序的,所以从这个位置开始类似双指针的向外寻找lower bound和upper boundpython代码如下:class Solution:...原创 2020-04-14 11:01:32 · 273 阅读 · 0 评论