描述
给定一个排序数组和一个目标值,如果在数组中找到目标值则返回索引。如果没有,返回到它将会被按顺序插入的位置。
你可以假设在数组中无重复元素。
样例
[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,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
分析
看见时间复杂度为O(log(n))的时候,可以考虑二分,但是这里不需要这么麻烦。我们对整个数组进行遍历(因为已经排好序),找到那个临界值,要么大于,要么小于,要么等于target。
PS:毕竟是简单程度的题目,也不会太难,如果发现用很复杂的方法实现,且代码量特别大,说明程序或者思路有问题。
程序
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
int i;
for(i = 0; i < A.size(); i++){
if(target <= A[i])
break;
}
return i;
}
};