給定乙個按照公升序排列的整數陣列 nums,和乙個目標值 target。找出給定目標值在陣列中的開始位置和結束位置。
你的演算法時間複雜度必須是 o(log n) 級別。
如果陣列中不存在目標值,返回 [-1, -1]。
示例 1:
輸入: nums = [5,7,7,8,8,10], target = 8
輸出: [3,4]
示例 2:
輸入: nums = [5,7,7,8,8,10], target = 6
輸出: [-1,-1]
class solution {
public:
int left(vector& nums,int target)
int l = 0;
int r = nums.size()-1;
while(l <= r)
int mid = (l + r)/2;
if(target == nums[mid])
if(mid == 0 || target > nums[mid - 1])
return mid;
r = mid - 1;
else if(nums[mid] < target)
l = mid + 1;
else if(nums[mid] > target)
r = mid - 1;
return -1;
int right(vector& nums,int target)
int l = 0;
int r = nums.size()-1;
while(l <= r)
int mid = (l + r)/2;
if(target == nums[mid])
if(mid == nums.size() - 1 || target < nums[mid + 1])
return mid;
l = mid + 1;
else if(nums[mid] < target)
l = mid + 1;
else if(nums[mid] > target)
r = mid - 1;
return -1;
vectorsearchrange(vector& nums, int target) {
int l = left(nums,target);
int r = right(nums,target);
vectorvec;
vec.push_back(l);
vec.push_back(r);
return vec;
34 在排序陣列中查詢元素的第乙個和最後乙個位置
給定乙個按照公升序排列的整數陣列nums,和乙個目標值target。找出給定目標值在陣列中的開始位置和結束位置。你的演算法時間複雜度必須是o log n 級別。如果陣列中不存在目標值,返回 1,1 輸入 nums 5,7,7,8,8,10 target 8 輸出 3,4 輸入 nums 5,7,7,...
34 在排序陣列中查詢元素的第乙個和最後乙個位置
給定乙個按照公升序排列的整數陣列nums,和乙個目標值target。找出給定目標值在陣列中的開始位置和結束位置。你的演算法時間複雜度必須是 o log n 級別。如果陣列中不存在目標值,返回 1,1 示例 1 輸入 nums 5,7,7,8,8,10 target 8輸出 3,4 示例 2 輸入 n...
34 在排序陣列中查詢元素的第乙個和最後乙個位置
給定乙個按照公升序排列的整數陣列nums,和乙個目標值target。找出給定目標值在陣列中的開始位置和結束位置。你的演算法時間複雜度必須是 o log n 級別。如果陣列中不存在目標值,返回 1,1 示例 1 輸入 nums 5,7,7,8,8,10 target 8輸出 3,4 示例 2 輸入 n...