LeeCode34:
给定一个按照升序排列的整数数组 nums,和一个目标值 target。找出给定目标值在数组中的开始位置和结束位置。
你的算法时间复杂度必须是 O(log n) 级别。
如果数组中不存在目标值,返回 [-1, -1]。
题目解析:
查找排序数组的题目,复杂度要求O(log n)级别,显而易见要用二分法。
二分法的解题套路:
int binarySearch(vector<int> &nums, int target) {
int left = 0, right = ...;
while(...) {
int mid = left + (right - left) / 2;
if (target == nums[mid]) {
...
} else if (nums[mid] < target) {
left = ...
} else if (target < nums[mid]) {
right = ...
}
}
return ...;
}
二分法的细节之处在于<