LeetCode34. Search for a Range
题目:
Given an array of integers sorted in ascending order, find the starting and ending position of a given target value.
Your algorithm's runtime complexity must be in the order of O(log n).
If the target is not found in the array, return [-1,
-1].
For example,
Given [5, 7, 7, 8, 8, 10] and target value 8,
return [3, 4].
用二分查找法,用一个little和high记录查询。
代码:
class Solution {
public:
vector<int> searchRange(vector<int>& nums, int target) {
if (nums.size()==0) return {-1,-1};
int mid = nums.size() / 2, high = nums.size() -1, little = 0;
vector<int> result = { -1,-1 };
while (little < high) {
mid = (high + little) / 2;
if (nums[mid] < target) little = mid + 1;
else high = mid;
}
if (nums[little] != target) return result;
else result[0] = little;
high = nums.size() - 1;
while (little < high) {
mid = (high + little) / 2 + 1;
if (nums[mid] > target) high = mid - 1;
else little = mid;
}
result[1] = high;
return result;
}
};
本文详细解析了LeetCode第34题“查找给定目标值的起始和结束位置”的解决方案。采用二分查找法高效寻找有序整数数组中特定目标值的位置范围,并附带实现代码。
445

被折叠的 条评论
为什么被折叠?



