我的实现:
int searchInsert(int* nums, int numsSize, int target){
int rangeL = 0, rangeR = numsSize - 1;
if (target > nums[numsSize - 1]) return numsSize;
if (target == nums[numsSize - 1]) return numsSize - 1;
if (target <= nums[0]) return 0;
while (1)
{
if (rangeR == rangeL + 1) return rangeR;
int middle = rangeL + (rangeR - rangeL) / 2;
if (nums[middle] == target) return middle;
else if (nums[middle] > target) rangeR = middle;
else rangeL = middle;
}
return -1;
}
google 后看到了一种 O(n) 的容易理解的编码方式:
int searchInsert(int* nums, int numsSize, int target)
{
for (int i = 0; i < numsSize; i ++)
{
if (nums[i] >= target) return i;
}
return numsSize;
}