Search Insert Position

来源:互联网 发布:脉脉软件安全吗 编辑:程序博客网 时间:2024/05/03 16:59

https://oj.leetcode.com/problems/search-insert-position/


1、题目要求:给定一个已排序数组A[],和目标值target,如果在数组A[]中找到了目标值target,则返回其下标索引值,如果没有找到目标值target,则返回如果将target插入到数组A[]中 的索引值。

例:

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


2、解题思路:二分查找来确定target的位置,如果没有找到,则此时right<left (left - right= 1),right+1(或者left)就是target在A[]中的位置,因为如果target在数组A[]中,则当left=right时查找成功。


class Solution {public:    int searchInsert(int A[], int n, int target) {        if(n<=0)            return 0;        int left= 0, right= n-1, mid;        //二分查找,注意循环的条件是<=        while(left<=right)        {            mid= (left+right)/2;            if(target>A[mid])                left= mid+1;            else if(target<A[mid])                right= mid-1;            else                return mid;        }        //当查找失败的时候,right<left,        //return ++right;        return left;    }};



0 0