Every day a leetcode
题目来源:35. 搜索插入位置
解法1:二分查找
题目要求必须使用时间复杂度为 O(log n) 的算法,且数组有序,毫无疑问用二分查找。
二分查找的思路不难理解,但是边界条件容易出错,比如:循环结束条件中 left 和 right 的关系,更新 left 和 right 位置时要不要加 1 减 1。
代码:
int searchInsert(int* nums, int numsSize, int target){
int left=0;
int right=numsSize-1;
int mid;
while(left<right)
{
mid=(left+right)/2;
if(nums[mid]>target) right=mid-1;
else if(nums[mid]<target) left=mid+1;
else return mid;
}
return left;
}
结果: