60. 搜索插入位置(二分法)

给定一个排序数组和一个目标值,如果在数组中找到目标值则返回索引。如果没有,返回到它将会被按顺序插入的位置。

你可以假设在数组中无重复元素。

样例

[1,3,5,6],5 → 2

[1,3,5,6],2 → 1

[1,3,5,6], 7 → 4

[1,3,5,6],0 → 0

思想:对于这种有序且需要查找元素的题,首先应想到二分法查找,因为其时间复杂度低logn

class Solution {
public:
    /*
     * @param A: an integer sorted array
     * @param target: an integer to be inserted
     * @return: An integer
     */
    int searchInsert(vector &A, int target) {
        // write your code here
        //考虑二分法的目的是其时间复杂度为log(n)比较低
        int low=0,mid,high=A.size()-1;
        while(low<=high)
         {   mid=low+(high-low)/2;
             if(A[mid]target)
              high=mid-1;
              else 
              return mid;
         }
        return  low;
    }
};



你可能感兴趣的:(linkcode,数组,二分法)