https://oj.leetcode.com/problems/search-insert-position/
数组有序,给一个数,看它是否在数组内,如果是则返回位置,如果不在则返回插入位置。
因为原数组有序,所以使用二分查找。
注意:如果是要插入这个元素的话,当target元素小于begin时候,是在begin位置上插入,如果大于则在begin+1位置上插入。
要测试数组为空,或者只有一个元素时候情况。
#include <iostream> using namespace std; class Solution { public: int searchInsert(int A[], int n, int target) { if(n==0) return 0; int begin = 0; int end = n-1; int middle = (begin + end)/2; while(begin<end) { if(target == A[middle]) return middle; else if(target<A[middle]) end = middle - 1; else begin = middle+1; middle = (begin + end)/2; } if(A[begin] >= target ) return begin; return begin +1; } }; int main() { int arr[] = {1,3,5,6}; Solution myS; cout<<myS.searchInsert(arr,1,0); }