LintCode 60 搜索插入位置

来源:互联网 发布:亚马逊调价软件 编辑:程序博客网 时间:2024/05/12 04:38

题目:searchInsert


要求:

给定一个排序数组和一个目标值,如果在数组中找到目标值则返回索引。如果没有,返回到它将会被按顺序插入的位置。
你可以假设在数组中无重复元素。

样例:

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

算法要求:

O(log(n)) time

解题思路:

就是二分查找- -直接上去噜噜噜噜~

算法如下:

    int searchInsert(vector<int> &A, int target) {        // write your code here        int left = 0;        int right = A.size() - 1;        int mid = (right + left) / 2;        if (A.size() != 0 && *A.begin() > target) {            A.insert(A.begin(), target);            return 0;        }        while (left <= right) {            if (A[mid] == target) {                return mid;            } else if (A[mid] > target) {                right = mid - 1;                mid = (right + left) / 2;            } else {                left = mid + 1;                mid = (right + left) / 2;            }        }        A.insert(A.begin() + left, target);        return left;    }
0 0
原创粉丝点击