题目链接:https://leetcode-cn.com/problems/search-insert-position/
开始练二分啦!
双模版:
- 果断流
class Solution {
public:
int searchInsert(vector<int>& nums, int target) {
if(target < nums[0]) {
return 0;
} else if(target > nums[nums.size() - 1]) {
return nums.size();
}
int l = 0, r = nums.size() - 1;
while(l <= r) {
int mid = (l + r) / 2;
if(nums[mid] == target) {
return mid;
} else if(nums[mid] > target) {
r = mid - 1;
} else {
l = mid + 1;
}
printf("l = %d, r = %d, mid = %d\n", l, r, mid);
}
return r + 1;
}
};
- 追逐流
class Solution {
public:
int searchInsert(vector<int>& nums, int target) {
if(target < nums[0]) {
return 0;
} else if(target > nums[nums.size() - 1]) {
return nums.size();
}
int l = 0, r = nums.size(); //初始化 r 的不用
while(l < r) { //while不同
int mid = (l + r) / 2;
if(nums[mid] == target) {
return mid;
} else if(nums[mid] > target) {
r = mid; // r 的更新不同
} else {
l = mid + 1;
}
printf("l = %d, r = %d, mid = %d\n", l, r, mid);
}
return r; // 未找到返回的不同
}
};