题目
解题思路
很经典的二分查找的题目,借此题熟悉二分查找的经典解题思路
代码
class Solution {
public:
int searchInsert(vector<int>& nums, int target) {
// 此种是暴力搜获的方法
// int len = nums.size();
// int insert_index = -1, find_index = 0;
// for(int i = 0; i < len; i++) {
// if(target == nums[i]) {
// find_index = i;
// return find_index;
// }
// if(insert_index == -1 && nums[i] > target)
// insert_index = i;
// if(i == len - 1 && insert_index == -1)
// insert_index = len;
// }
// return insert_index;
// 采用二分查找
int len = nums.size();
int left = 0, right = len - 1, mid = 0;
while(left <= right) {
mid = left + (right - left) / 2;
if(target == nums[mid])
return mid;
else if(target < nums[mid]) // 证明索引在左半部分
right = mid - 1;
else if(target > nums[mid])
left = mid + 1;
}
return left;
}
};