二分法总结:满足某个条件的first position of。。。。 和 last position of。。。。用二分法
先从二分法开始写:
4点:
1.start+1<end; 退出条件两个相邻了就退出
2.mid=start+(end-start)/2;//防止溢出
3.A[mid] == > <
4.最后判断相邻的两个元素和target的关系
找第一个出现target的位置
if(A.size() == 0){ return -1; } int start=0;int end=A.size()-1; while(start+1<end){ int mid=start+(end-start)/2; if(target == A[mid]){ end = mid;//find first appear } else if(target < A[mid]){ end = mid; }else if(target > A[mid]){ start=mid; } } if(target == A[start]){ return start; } else if(target == A[end]){ return end; } return -1;
Search for a range
找first pos last pos
当target == A[mid]
start 和 end怎么挪
1 2 4 4 5
找左边界
在(target == A[mid]){
end=mid;
}
找右边界
(target == A[mid]){
start=mid;
}
寻找插入位置(无重复元素)
第一个大于等于target的下标
在第四点会发生变化~
iftargete)
Search a 2D matrix
行递增 列递增
思考:从左下角考虑
可以删掉一行或者一列!!!
原文地址:https://www.cnblogs.com/ldphoebe/p/5940682.html
时间: 2024-08-26 16:59:59