Given a sorted array and a target value, return the index if the target is found. If not, return the index where it would be if it were inserted in order.
You may assume no duplicates in the array.
Here are few examples.
[1,3,5,6]
, 5 → 2
[1,3,5,6]
, 2 → 1
[1,3,5,6]
, 7 → 4
[1,3,5,6]
, 0 → 0
这道题是一道二分查找的题,二分查找的通式就是设置两个变量low,high记录位置,然后每次计算(low+high)/2,比较中间位置的值和目标值之间的大小,如果目标值大,那就说明目标值在中间位置的右边,将high=mid+1;如果目标值小,那就说明目标值在中间位值得左边,将low=mid-1;直到low>high,停止查找 ,返回low。
具体情况具体分析,上述方法也不是万能的,需要用特例来测试自己的程序,比如【1】 target=0,1,2时分别返回什么。
二分法最要注意的一点就是不要漏掉每一个有可能的数,即low 和high 的更新,到底要不要- +1,还有返回时候的位置坐标。
还有二分法基本上是对排好序的数列来做,如果没有排序可以先用sort排序。