您的位置:首页 > 其它

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

2015-08-09 21:42 183 查看
5270次

尝试次数

19.7%
1000ms
65536K

给定一个已经升序排好序的数组,以及一个数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
,最后输入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
();
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;
}
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: