0%

二分查找解题思路以及归错

1.[left,right]

IMG_0057

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
left=0;
right=num.size()-1; //-1是因为]的原因
while(left<=right) //为什么= 因为[1,1]合法
{
middle=(left+right)/2;
if(num[middle]>target)
{
right=middle-1; //为什么是middle-1 因为']'右区间去了闭,所以要减一避免重复
}
else if(num[middle]<target){
left=middle+1; //为什么+1,和上面同理
}
else{
return middle;
}

}

B4B0D0DA4054146C02000B88684BE541

2.[left,right)

IMG_0057

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
left=0;
right=num.size(); //)的原因
while(left<right) //为什么是<,因为[),[1,1)开区间的取不到
{
middle=(left+right)/2;
if (num[middle]>target){
right=middle; //为什么不加1,因为)开区间取不到
}
else if(num[middle]<target){
left=middle+1; //闭区间取得到,所以+1
}
else{
return middle;
}
}

B4B0D0DA4054146C02000B88684BE541

题目

模板题704. 二分查找

其他:

35 搜索插入位置

-------------本文结束感谢您的阅读-------------
老板你好,讨口饭吃