二分法的一些边界条件
今天在做 “力扣 222. 完全二叉树的节点个数”时发现答案的二分法很巧妙,但是我对答案的二分法的一个细微处理不明白,答案在求mid时,使用 mid=(right-left+1)/2+left 而不是 mid=(right-left)/2+left。
这就涉及到二分法的一些技巧。
如果要找到某个target是否存在,并且不关心这个target是否有多个重复值在数组里面,那么
while(left<=right){
int mid=(right-left)/2+left;
if(array[mid]==target){
return mid;
}
if(array[mid]>target){
right=mid-1;
} else {
left=mid+1;
}
}
如果查找某个target第一次出现在数组的位置,那么直接使用
while(left<=right){
if()
}
未完待续