二分法
文章平均质量分 55
Lev_i
随便记住我,然后忘了吧
展开
-
1894. 找到需要补充粉笔的学生编号
1894. 找到需要补充粉笔的学生编号贴个题目:贴个示例:在这里插入代码片解题思路:方法一:一次遍历+模拟读完题目我们可以看出,其实就是循环派粉笔给学生,直到学生拿不到足够的粉笔,这时候就返回学生的位置。那么我们可以先求循环一次学生需要多少支粉笔,然后求出派到最后一轮的时候,剩余的粉笔数。最后就遍历一次数组,一边遍历,一边减少粉笔数,什么时候粉笔数是负数的时候,就证明这一个学生不够粉笔派了,此时返回这一个学生的下标即可。优化:我们可以通过取余数来求出最后一轮的时候剩余的粉笔数,这样子原创 2021-09-10 21:48:30 · 130 阅读 · 0 评论 -
50. Pow(x,n)
50. Pow(x,n)贴个题目:贴个示例:解题思路:这一题,用个开玩笑的做法就是直接return pow(x,n),这是最赖皮的做法。但是题目本来就要求你写一个pow函数,所以我们要用其他方法。直接遍历是可以的,但是呢,会超出时间限制,因此我们要想一种方法,能够减少时间复杂度。收到二分法的启发,我们可以进行类似于以下的计算:x,xx,xxxx……因此就会有递归式:myPow(x*x,n/2)那么上述的递归式,是n为偶数的情况,当n为奇数的时候又应该怎么样呢?由于n为奇数,因此我们可以先原创 2021-08-25 15:57:20 · 123 阅读 · 0 评论 -
167. 两数之和 II - 输入有序数组
167. 两数之和 II - 输入有序数组贴个题目:贴个示例:解题思路:1、双指针:由于这是一个已经排好序的数组,因此两数相加==target,那么那两个数肯定是一个在左边,一个在右边,我们只需要弄两个指针,一个从头,一个从尾,向中间靠拢,直到找出两数之和的对应下标即可贴代码:/** * Note: The returned array must be malloced, assume caller calls free(). */int* twoSum(int* numbers,原创 2021-08-07 11:17:37 · 115 阅读 · 0 评论 -
69. x的平方根
69. x的平方根贴个题目:贴个示例:解题思路:这一题,一开始想到的就是简单粗暴直接从1~x遍历,但是会超时,因此考虑到遍历过程中出现了升序的序列,因此可以用二分查找这里的二分查找返回的是右边界,因此需要-1还有0和1这两个特殊值需要特殊的照顾贴个代码:int binarySearch(int num){ if(num==1) return 1;//特殊情况特殊处理 if(num==0) return 0; int left=0; int right=n原创 2021-07-20 23:08:14 · 60 阅读 · 0 评论 -
34. 在排序数组中查找元素的第一个和最后一个位置
34. 在排序数组中查找元素的第一个和最后一个位置贴个题目:贴示例:解题思路:这一道题的解题思路其实和我之前做过一个题目是一样的,只是返回值不同,具体可以看:剑指 Offer 53 - I. 在排序数组中查找数字 I只是多了一个判断下标是否符合规则,下面直接贴代码。贴代码:/** * Note: The returned array must be malloced, assume caller calls free(). */int binarySearch(int *nums,i原创 2021-07-16 21:41:56 · 72 阅读 · 0 评论 -
剑指 Offer 53 - I. 在排序数组中查找数字 I
剑指 Offer 53 - I. 在排序数组中查找数字 I贴个题目:贴个示例:解题思路:第一种:暴力解题法暴力解题,我直接遍历数组,统计有多少个代码:int search(int* nums, int numsSize, int target){ int sum=0; for(int i=0;i<numsSize;i++) { if(nums[i]==target) sum++; } return sum;}性能分析:原创 2021-07-16 21:18:07 · 107 阅读 · 0 评论 -
1818. 绝对差值和
1818. 绝对差值和前言:这题其实挺简单的,我的简单意思是,他可以用简单粗暴的方法做,那么用这种方法做呢,肯定是要用双循环的,那么时间复杂度就是O(nn),那对于这一题的要求来说,对不起,你必定超时(别问我怎么知道,因为我试过)。因此对于找替换元素那里的双循环,用二分查找,就可以省一点时间,时间复杂度就可以控制在:O(nlogn),这样子就不会超时啦贴个题目:贴个示例:解题思路:首先,看到题目,让我们算一个nums1[i]-nums2[i]的和,但是!有一个条件:nums1中可以用原创 2021-07-14 21:22:18 · 387 阅读 · 0 评论 -
275. H 指数 II
275. H 指数 II题目简介:题目示例:提示:如果h存在多个可能的值,那么h取较大值解题思路:这题相比于昨天,更加简单了,因为都不用你排序,因此我一开始是使用了我昨天的做法,详情:274. H指数那么,既然题目说了数组已经升序排序,我们可以考虑一下能否使用二分法假设数组有N个元素,下标用index来表示,那么N-index表示的就是其余被引用的论文,他应该满足条件:不多于被引用h次,又前index篇论文至少被引用h次,因此可以得出二分的条件是:1、如果N-index>cita原创 2021-07-12 12:15:52 · 98 阅读 · 0 评论