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
给定一个有序的数组和目标值,如果数组中有target值,则返回索引位,如果没有target值,则返回该值应该插入的位置。数组中没有重复元素。
class Solution { public: int searchInsert(int A[], int n, int target) { //A数组为空 if(n==0)return 0; //target与首尾元素的比较 if(target<A[0])return 0; else if(target>A[n-1])return n; //A数组只有一个元素 if(n==1 && target==A[0])return 0; int low=0, high=n-1; while(low+1<high){ int mid=(low+high)/2; if(A[mid]==target)return mid; else if(target<A[mid]) high=mid; //注意mid不能排除,否则插入范围就无法确定,因此是mid,而不是常规的mid-1 else low=mid; //同high } if(A[low]==target)return low; else return high; } };
LeetCode: Search Insert Position [034],布布扣,bubuko.com
LeetCode: Search Insert Position [034]
原文地址:http://blog.csdn.net/harryhuang1990/article/details/26236001