LeetCode 704
https://leetcode.cn/problems/binary-search/description/
难度:简单
红蓝染色法,开区间二分。满足条件 nums[mid] >= target 更新 right = mid。更新什么什么就是答案,本题 right 就是答案。
时间复杂度:O(logn),其中 n 为 nums 的长度。
空间复杂度:O(1)。
class Solution {
public:
int search(vector<int>& nums, int target) {
int n = nums.size();
int left = -1, right = n;
while (left + 1 < right) {
int mid = left + (right - left) / 2;
if (nums[mid] >= target) {
right = mid;
} else {
left = mid;
}
}
if (right == n || nums[right] != target) {
return -1;
}
return right;
}
};