LeetCode题解——搜索插入位置
- 题目介绍
- 解题思路
- 题目的意思是当存在目标元素就返回下标,没有就把目标插入到合适的位置
- 那么存在的情况很简单,那何时插入元素,可以这么想只有当遇到第一个比目标大的数据才会将数据插入
- 如果数组里面没有比目标数据大的,那就插入到最后,这是第一种方法,比较暴力直接遍历
- 第二种方法使用二分法,每次与中间位置对比
- 代码示例
方法一:
class Solution {
public:
int searchInsert(vector<int>& nums, int target) {
int len= nums.size();
int res = len;
for(int i = 0; i < len; i++) {
if(nums[i] >= target) {
res = i;
break;
}
}
return res;
}
};
方法二:
class Solution {
public:
int searchInsert(vector<int>& nums, int target) {
int right= nums.size()-1;
int left = 0;
if(target<=nums[0]){
return 0;
}
if(target>nums[right]) {
return right+1;
}
while(left<right){
int mid = (right+left)/2;
if(nums[mid] == target) {
return mid;
}else if(nums[mid] > target) {
right = mid;
}else{
left = mid+1;
}
}
return right;
}
};