面试代码基础二分法binary Search Sorted Array
Posted ldphoebe
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了面试代码基础二分法binary Search Sorted Array相关的知识,希望对你有一定的参考价值。
二分法总结:满足某个条件的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
行递增 列递增
思考:从左下角考虑
可以删掉一行或者一列!!!
以上是关于面试代码基础二分法binary Search Sorted Array的主要内容,如果未能解决你的问题,请参考以下文章
不仅仅是算法--二分查找(binary search)的心路历程
数据结构05红-黑树基础----二叉搜索树(Binary Search Tree)