提示
LintCode中的相关算法题实现代码,可以在我的GitHub中下载。
题目需求
描述
给定一个排序数组和一个目标值,如果在数组中找到目标值则返回索引。如果没有,返回到它将会被按顺序插入的位置。
你可以假设在数组中无重复元素。
样例
[1,3,5,6],5 → 2
[1,3,5,6],2 → 1
[1,3,5,6], 7 → 4
[1,3,5,6],0 → 0
挑战
O(log(n)) time
解题思路
主要的解决方式是二分法。
实现代码
class Solution {
public:
/**
* @param A: an integer sorted array
* @param target: an integer to be inserted
* @return: An integer
*/
int searchInsert(vector<int> &A, int target) {
// write your code here
if(A.size()==0) return 0;
int low=0;
int high=A.size()-1;
while(low<=high)
{
int mid=(low+high)/2;
if(A[mid]==target) return mid;
else if(A[mid]>target) high=mid-1;
else
low=mid+1;
}
return low;
}
};