![](https://img-blog.csdnimg.cn/20201014180756927.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
二分/三分
巴巴多斯小魔
这个作者很懒,什么都没留下…
展开
-
杨氏矩阵第K小/查找目标数字
leetcode 378. 有序矩阵中第 K 小的元素class Solution {#define ll long longpublic: int cal(int mid,vector<vector<int>>&ma){ int n=ma.size(),i=n-1,j=0,res=0; while(i>=0&&j<n){ if(ma[i][j]<=mid) res+=i原创 2021-03-03 14:04:06 · 137 阅读 · 0 评论 -
leetcode 354. 俄罗斯套娃信封问题(最长上升子序列模板 仅此记录一下nlogn的方法而已)
题目class Solution {public: int maxEnvelopes(vector<vector<int>>& a) { int n=a.size(),*d=new int[n+1]; if(!n) return 0; sort(a.begin(),a.end(),[](const vector<int>& A,const vector<int>& B){原创 2020-12-14 21:48:20 · 104 阅读 · 0 评论 -
leetcode 4. 寻找两个正序数组的中位数
题目判断一个数mid是不是一个长度为n的排序序列(有重复)的第dex个数:(<mid的个数应该<=dex-1)&&(>mid的个数应该<=n-dex);<mid的个数就是 dex=lower_bound,--dex;>mid的个数就是 dex=upper_boundclass Solution {#define INF 0x3f3f3f3fpublic: int cal(int mid,int dex,vector<int&g原创 2020-12-01 13:57:36 · 60 阅读 · 0 评论 -
leetcode 1201. 丑数 III(二分+容斥算1-n有多少个可被a或b或c整除的数)
题目二分,判断1-mid 有多少个数可被a,或b,或c整除。(容斥)注意的是,当cal(mid)==n时,区间应该左移,high=mid-1;因为cal(mid)==n时,mid可能并不是合法的数,既然1到mid有n个合法的数,那么[1,mid-1],肯定有合法的数。而比mid大的数,或许cal()它可能是n,但也是不合法的,后面有一个合法的话就是cal()=n+1了。class Solution {#define ll long longpublic: int a,b,c;原创 2020-12-01 13:16:14 · 169 阅读 · 0 评论 -
leetcode 154. 寻找旋转排序数组中的最小值 II(二分 能力逐渐下降..)
题目答案写的二分看不懂,只能自己写了呗。肚子好痛好难受。3. 显然nums[mid]=nums[high],要–high,这没什么可说的。class Solution {public: int findMin(vector<int>& nums) { int n=nums.size(); int low=0,high=n-1; while(low<high){ if(high-low==1)原创 2020-11-29 10:02:15 · 64 阅读 · 0 评论