
【题目】:704. 二分查找
左闭右闭区间[l, r]
:
class Solution { public: int search(vector<int>& nums, int target) { int l = 0, r = nums.size() - 1; int mid = l + (r - l) / 2; while(l <= r) { if(nums[mid] == target) { return mid; }else if(nums[mid] > target) { r = mid - 1; }else { l = mid + 1; } mid = l + (r - l) / 2; } return -1; } };
|
- 时间复杂度: O(logn)
- 空间复杂度: O(1)
左闭右开区间[l, r):
class Solution { public: int search(vector<int>& nums, int target) { int l = 0, r = nums.size(); int mid = l + (r - l) / 2; while(l < r) { if(nums[mid] == target) { return mid; }else if(nums[mid] > target) { r = mid; }else { l = mid + 1; } mid = l + (r - l) / 2; } return -1; } };
|