LeetCode OJ--Search Insert Position

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

数组有序,给一个数,看它是否在数组内,如果是则返回位置,如果不在则返回插入位置。

因为原数组有序,所以使用二分查找。

注意:如果是要插入这个元素的话,当target元素小于begin时候,是在begin位置上插入,如果大于则在begin+1位置上插入。

要测试数组为空,或者只有一个元素时候情况。

#include <iostream>
using namespace std;

class Solution {
public:
    int searchInsert(int A[], int n, int target) {
        if(n==0)
            return 0;
        int begin = 0; 
        int end  = n-1;
        int middle = (begin + end)/2;
        while(begin<end)
        {
            if(target == A[middle])
                return middle;
            else if(target<A[middle])
                end = middle - 1;
            else
                begin = middle+1;
            middle = (begin + end)/2;
        }
        if(A[begin] >= target )
            return begin;
        return begin +1;

    }
};

int main()
{
    int arr[] = {1,3,5,6};
    Solution myS;
    cout<<myS.searchInsert(arr,1,0);
}
原文地址:https://www.cnblogs.com/qingcheng/p/3750832.html