计蒜客 难题题库 010 寻找插入位置

给定一个已经升序排好序的数组,以及一个数target,如果target在数组中,返回它在数组中的位置。


否则,返回target插入数组后它应该在的位置。

假设数组中没有重复的数。以下是简单的示例:

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

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

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

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

提示:输入一个整数n,以及其对应的数组A[n],最后输入target

searchInsert(int A[], int n, int target)

样例1

输入:

3
1 3 5
2

输出:

1


#include<iostream>
using namespace std;

// const int maxn = 10000001;
// int a[maxn];

int main(){
    int n;
    cin >> n;
    int *a = new int[n]();
    for(int i = 0; i < n; ++i){
        cin >> a[i];
    }
    int target;
    cin >> target;
    int left = 0, right = n - 1;
    int mid;
    while(left < right){
        mid = (left + right) >> 1;
        if(a[mid] < target){
            left = mid + 1;
        }else{
            right = mid;
        }
    }
    if(a[left] >= target){
        cout << left << endl;
    }else{
        cout << left + 1 << endl;
    }
}


你可能感兴趣的:(OJ,计蒜客)