- 博客(20)
- 收藏
- 关注
原创 2022/4/24二分查找基础
1482. 制作 m 束花所需的最少天数二分答案,模板都差不多,就检验答案是否可行这片不一样class Solution {public: int minDays(vector<int>& bloomDay, int m, int k) { if(m*k>bloomDay.size()){ return -1; } int ans=0; int p=21474...
2022-04-25 10:00:00
186
1
原创 二分查找基础
287. 寻找重复数用一个数组记录下出现数的次数,如果超过两次就返回这个数class Solution {public: int findDuplicate(vector<int>& nums) { int arr[100005]={}; for(int i=0;i<nums.size();i++){ arr[nums[i]]++; if(arr[nums[i]]...
2022-04-23 10:00:00
333
原创 二分查找基础学习
875. 爱吃香蕉的珂珂这题看起来十分眼熟啊,像极了1760. 袋子里最少数目的球还是一样的解法,速度可以从1到1e9,是具有单调性的,当一个速度可以吃完时,比它快的肯定也能吃完,所以可以用二分查找能够吃完的最小速度,最后返回这个最小速度就行。class Solution {public: int minEatingSpeed(vector<int>& piles, int h) { int p=1,q=1000000000;...
2022-04-22 15:42:34
168
1
原创 二分查找基础
300. 最长递增子序列打死我都想不到怎么用二分,连动态规划都是看了答案才懂的,假设dp[i]是取nums[i]是最长的序列,可知dp[i]=max(dp[j])+1&&j<i&&nums[i]>nums[j],这样遍历一遍数组把dp[i]都算出来,然后返回其中最大值即可class Solution {public: int lengthOfLIS(vector<int>& nums) { ...
2022-04-21 10:00:00
159
3
原创 二分查找基础学习
658. 找到 K 个最接近的元素有序数组,找某个值,很明显的二分,先用二分找到数组中最接近x的那个元素,然后再左右扩张至长度k返回这k长度内所有的值就行。class Solution {public: vector<int> findClosestElements(vector<int>& arr, int k, int x) { vector<int>ans; int p=0,q=arr.size()-1
2022-04-20 10:00:00
394
2
原创 力扣二分查找学习计划 第十天
350. 两个数组的交集 II直接进行排序,然后双指针一个个比,一样就加入答案的数组里,最后返回答案数组即可class Solution {public: vector<int> intersect(vector<int>& nums1, vector<int>& nums2) { sort(nums1.begin(),nums1.end()); sort(nums2.begin(),nums2.en
2022-04-16 12:00:00
394
3
原创 力扣二分查找学习计划 第九天
1337. 矩阵中战斗力最弱的 K 行又是熟悉的二维矩阵,之前的学习中知道,我们可以对每一行使用二分来得到每行的战斗力,问题就在于如何把战斗力从小到大排序的同时还保留它们的下标位置呢?注意到数据范围最大是100,也就是说下标最大是99,那么假设战斗力为p,下标为i我们令n=p*100+i,这样的话我们可以用n/100来得到战斗力p,用n%100来得到下标i,我们将每行的n储存起来再排序,很容易得到这样的排序其实是按战斗力排的,然后就可以返回前k项解决此题。class Solution
2022-04-15 12:00:00
370
2
原创 力扣二分查找刷题计划 第七天
167. 两数之和 II - 输入有序数组一看非递减排序,两数之和是target,啪的一下双指针就出来了,很快啊class Solution {public: vector<int> twoSum(vector<int>& numbers, int target) { int p=0,q=numbers.size()-1; vector<int> ans; int mm=numbers[p]+
2022-04-13 12:00:00
303
3
原创 力扣二分查找学习计划 第四天
69. x 的平方根我直接不讲码德 return sqrt(x) 简单二分,没啥好讲的,因为整形是向下取整所以返回的值肯定是小于等于sqrt(x)的所以只要找到某个i满足i*i<=x和(i+1)*(i+1)>x,然后返回i即可class Solution {public: int mySqrt(int x) { if(x<2){ return x; } long long int p=.
2022-04-10 12:00:00
451
4
原创 力扣刷题 二分查找学习计划 第三天
367. 有效的完全平方数简单二分查找,需要注意的是溢出问题class Solution {public: bool isPerfectSquare(int num) { int p=1,q=num/2; if(num==1){ return 1; } while(p<=q){ long long int mid=(q+p)/2; if
2022-04-09 12:00:00
151
1
原创 力扣刷题 796、旋转字符串
1、s要想通过旋转变成goal,那么首先它们长度得一样,于是先排除特殊情况 if(s.size()!=goal.size()){ return 0; }2、接下来判断s是否可以通过旋转变成goal假设s里的第i项与goal里的第0项相同,即 s[i]==goal[0] 那么要让s旋转后与goal相同的话,就要 s[i+j]==goal[j],当i+j>s.size()时,s要从第0项继续对比,即s[(i+j)%s.s...
2022-04-07 18:53:17
110
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人