给定一个排序数组和一个目标值,在数组中找到目标值,并返回其索引。如果目标值不存在于数组中,返回它将会被按顺序插入的位置。

你可以假设数组中无重复元素。

示例 1:

输入: [1,3,5,6], 5
输出: 2

代码实现


class Solution {public: int searchInsert(vector<int>& nums, int target) { int begin = 0; int end = nums.size()-1; int index = -1; while(index == -1) { int mid = (begin + end) / 2; if(nums[mid] == target) index = mid; else if(target < nums[mid]) { if(mid == 0 || target > nums[mid - 1] ) //先判断mid的值,,顺序不能反 index = mid; end = mid - 1; } else if(target > nums[mid]) { if( mid == nums.size()-1 ||target < nums[mid + 1] ) index = mid + 1; begin = mid + 1; } } return index; }};