Given a sorted array and a target value, return the index if the target is found. If not, return the index where it would be if it were inserted in order.
You may assume no duplicates in the array.
Here are few examples.
[1,3,5,6], 5 → 2
[1,3,5,6], 2 → 1
[1,3,5,6], 7 → 4
[1,3,5,6], 0 → 0
class Solution {
public:
int searchInsert(int A[], int n, int target) {
int first = 0,end = n - 1,mid;
int result = -1;
while(first <= end){
mid = (first + end)/2;
if(A[mid] == target)
return mid;
else if(A[mid] > target)
end = mid - 1;
else
first = mid + 1;
}
if(target < A[n - 1] && target > A[0])
return first;
else if(target < A[0])
return 0;
else return n;
}
};class Solution {
public:
int searchInsert(int A[], int n, int target) {
int first = 0,end = n - 1,mid;
while(first <= end){
mid = (first +end)/2;
if(A[mid] == target)
return mid;
else if(A[mid] > target)
end = mid - 1;
else
first = mid + 1;
}
return first;
}
};
本文介绍了一个高效的搜索算法,用于在一个已排序的数组中查找特定元素的位置,或确定该元素如果存在则应插入的位置。通过实现二分查找算法,确保在O(log n)的时间复杂度内完成任务。
494

被折叠的 条评论
为什么被折叠?



