原题网址: http://www.lintcode.com/zh-cn/problem/search-insert-position/#
给定一个排序数组和一个目标值,如果在数组中找到目标值则返回索引。如果没有,返回到它将会被按顺序插入的位置。
你可以假设在数组中无重复元素。
样例
[1,3,5,6],5 → 2
[1,3,5,6],2 → 1
[1,3,5,6], 7 → 4
[1,3,5,6],0 → 0
标签
1 #include <iostream>
2 #include <vector>
3 #include <math.h>
4 #include <string>
5 #include <algorithm>
6 using namespace std;
7
8 int searchInsert(vector<int> &A, int target)
9 {
10 if (A.empty())
11 {
12 return 0;
13 }
14 int size=A.size();
15 if (target<A[0])
16 {
17 return 0;
18 }
19 if (target>A[size-1])
20 {
21 return size;
22 }
23
24 int low=0,high=size-1,mid=(low+high)/2;
25 while(low<=high)
26 {
27 if (target==A[mid])
28 {
29 return mid;
30 }
31 else if (target<A[mid])
32 {
33 high=mid-1;
34 }
35 else
36 {
37 low=mid+1;
38 }
39 mid=(low+high)/2;
40 }
41 return low;//最接近target的值,且比前一个值大;
42 }
参考: