給定乙個按照公升序排列的整數陣列 nums,和乙個目標值 target。找出給定目標值在陣列中的開始位置和結束位置。
你的演算法時間複雜度必須是 o(log n) 級別。
如果陣列中不存在目標值,返回 [-1, -1]。
class
solution
:def
fp(self, nums, l, r, t)
:while lmid =
int(l+
(r-l)/2
)if nums[mid]
< t:
l = mid+
1else
: r = mid
if nums[l]
==t:
return l
else
:return-1
deflp
(self, nums, l, r, t)
:while lmid =
int(l+
(r-l+1)
/2)if nums[mid]
> t:
r = mid-
1else
: l = mid
if nums[l]
==t:
return l
else
:return-1
defsearchrange
(self, nums: list[
int]
, target:
int)
-> list[
int]:if
not nums:
return[-
1,-1
] fp = self.fp(nums,0,
len(nums)-1
, target)
lp = self.lp(nums,0,
len(nums)-1
, target)
return
[fp,lp]
這裡需要注意的兩點:
求fp的時候mid = int(l+(r-l)/2)
求lp的時候mid = int(l+(r-l+1)/2)
排序陣列查詢第乙個和最後乙個位置
描述 給定乙個按照公升序排列的整數陣列 nums,和乙個目標值 target。找出給定目標值在陣列中的開始位置和結束位置。你的演算法時間複雜度必須是 o log n 級別。如果陣列中不存在目標值,返回 1,1 package leetcoder author zhaoliang program ne...
在排序陣列中查詢元素的第乙個和最後乙個位置
給定乙個按照公升序排列的整數陣列 nums,和乙個目標值 target。找出給定目標值在陣列中的開始位置和結束位置。你的演算法時間複雜度必須是 o log n 級別。如果陣列中不存在目標值,返回 1,1 示例 1 輸入 nums 5,7,7,8,8,10 target 8 輸出 3,4 示例 2 輸...
在排序陣列中查詢元素的第乙個和最後乙個位置
題目描述 給定乙個按照公升序排列的整數陣列 nums,和乙個目標值 target。找出給定目標值在陣列中的開始位置和結束位置。你的演算法時間複雜度必須是 o log n 級別。如果陣列中不存在目標值,返回 1,1 示例1 輸入 nums 5,7,7,8,8,10 target 8 輸出 3,4 示例...