LeetCode 35:搜索插入位置
LeetCode 704:二分查找
两题都是最基本的二分查找问题,两题一起来做。
题目
LeetCode 35:搜索插入位置
LeetCode 704:二分查找
思路
两题都是最基本的二分法问题,区别是不存在时的返回方式。704比较容易,只需要返回-1,而35需要返回插入位置,两者最后的特殊情况处理不同。
代码
LeetCode 35:搜索插入位置
class Solution {
public:
int searchInsert(vector<int>& nums, int target) {
int n = nums.size();
int start = 0;
int end = n-1;
while(end - start > 1)
{
int mid = (start + end)/2;
if(target == nums[mid])
return mid;
else if(target > nums[mid])
start = mid;
else
end = mid;
}
if(target <= nums[start])
return start;
else if(target > nums[end])
return end+1;
return end;
}
};
LeetCode 704:二分查找
class Solution {
public:
int search(vector<int>& nums, int target) {
int n = nums.size();
int start = 0;
int end = n-1;
while(end - start > 1)
{
int mid = (start + end)/2;
if(target == nums[mid])
return mid;
else if(target > nums[mid])
start = mid;
else
end = mid;
}
if(nums[start]==target)
return start;
else if(nums[end]==target)
return end;
return -1;
}
};