
這個題目還是屬於查找類的題目,和前面的題目比較類似,題目的要求是給定一個target,在有序數組裡面查找該元素的插入順序,若存在了則返回該元素的下標。這道題比較直觀,所以比較容易動手,需要注意到的應該就是邊界條件的問題吧,比如說:
(1). 目標元素比排序數組中的最小元素還小
(2). 目標元素比排序數組中的最大元素還大
請看代碼吧,代碼寫的還是比較清晰的
class Solution {
public:
int searchInsert(vector& nums, int target)
{
int len = nums.size();
if (len == 0)
{
return 0;
}
int left = 0;
int right = len - 1;
int mid = 0;
if (target > nums[right])
{
return right + 1;
}
while (left < right)
{
mid = left + (right - left) / 2;
if (nums[left] == target)
{
return left;
}
if (nums[right] == target)
{
return right;
}
if (nums[mid] == target)
{
return mid;
}
if (nums[mid] > target)
{
right = mid;
}
else
{
left = mid + 1;
}
}
return left;
}
};
