```c++
class Solution {
public:
int searchInsert(vector<int>& nums, int target) {
int l = 0, r = nums.size()-1,n = nums.size();
int mid;
while(l <= r){
mid = l + r >> 1;
if(nums[mid] == target) return mid;
if(nums[mid] > target) r = mid -1; else l = mid +1; //要考虑两端不能无脑套模板
}
// 2 --> 1 1 -- > 1 0
// 2 -- > 3 4 --> 3 4 --> 4 4
if(r == n) return r;
return l;
}
};
```