因为是排序数组,所以首先考虑二分法。本题相较于普通的二分查找,仅仅多了一个if
条件判断。
class Solution {
public:
int searchInsert(vector<int>& nums, int target) {
int left = 0, right = nums.size() - 1;
while (left <= right)
{
int mid = (left + right) >> 1;
if (nums[mid] >= target)
{
//若第一个元素就大于target,则直接返回0
//若当前元素大于target且前一元素小于target,那么mid就是符合条件的位置
if (mid == 0 || nums[mid - 1] < target)
{
return mid;
}
right = mid - 1;
}
else
{
left = mid + 1;
}
}
//若数组中所有元素都小于target,则返回数组长度,即插在数组末尾
return nums.size();
}
};