34 在排序陣列中查詢元素的第乙個和最後乙個位置

2021-09-25 18:51:19 字數 1017 閱讀 6735

給定乙個按照公升序排列的整數陣列 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...