給定乙個按照公升序排列的整數陣列 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]
在c++查詢元素中,一看到時間複雜度是o(log n)級別,那麼第一反應應該是二分查詢,好了,我的思想就出來了。
class solution ;//當列表中只有乙個元素且與目標元素相等時,返回[0,0];
if(len==0) return;//當是空列表中時,返回[-1,-1];
while(l<=r)
if(lindex==0&&nums[lindex]==target)else
while(nums[rindex]==target&&rindexnums[mid])else
}if(ind.empty())else
return ind;
}};
可能在python中可能更好寫吧請看
class solution:
def searchrange(self, nums: list[int], target: int) -> list[int]:
rev =
if target not in nums or len(nums)==0:
return [-1,-1]
if len(nums)==1 and nums[0]==target:
return [0,0]
lindex = nums.index(target)
while nums[lindex]==target and lindex但是,有點羞愧的說,這個方法是很慢的,170多ms挺菜的
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...