題目
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) {
if(A==NULL || n<=0) return -1;
int begin=0, end=n-1;
while(begin<=end){
int mid = (begin+end)/2;
if(A[mid] == target) return mid;
if(A[mid] > target)
end = mid-1;
else
begin = mid+1;
}
return begin;
}
};
另外,我開通了微信公衆號--分享技術之美,我會不定期的分享一些我學習的東西.