题目描述
给定一个排序数组和一个目标值,在数组中找到目标值,并返回其索引。如果目标值不存在于数组中,返回它将会被按顺序插入的位置。
你可以假设数组中无重复元素。
示例1:
输入: [1,3,5,6], 5
输出: 2
示例2:
输入: [1,3,5,6], 2
输出: 1
示例3:
输入: [1,3,5,6], 7
输出: 4
示例4:
输入: [1,3,5,6], 0
输出: 0
来源:力扣(LeetCode)
链接:https://leetcode-cn.com/problems/search-insert-position
思路解析
简单的查找问题,使用二分法。
注意,找不到结果时的返回值。
代码实现
class Solution {
public:
int searchInsert(vector<int>& nums, int target) {
int lo = 0;
int hi = nums.size() - 1;
while(lo <= hi) {
if(nums[lo] == target)
return lo;
if(nums[hi] == target)
return hi;
int mid = (lo + hi) / 2;
if(nums[mid] == target)
return mid;
else if(nums[mid] > target)
hi = mid - 1;
else
lo = mid + 1;
}
return lo;
}
};