class Solution(object):
def searchRange(self
, nums
, target
):
"""
:type nums: List[int]
:type target: int
:rtype: List[int]
"""
def findlow(nums
,target
,low
,high
):
while low
<= high
:
mid
= low
+ (high
-low
)//2
if nums
[mid
] == target
and (mid
== 0 or nums
[mid
-1] < nums
[mid
]):
return mid
if nums
[mid
] >= target
:
high
= mid
-1
else:
low
= mid
+1
if low
> high
:
return -1
def findhigh(nums
,target
,low
,high
):
while low
<= high
:
mid
= low
+ (high
-low
)//2
if nums
[mid
] == target
and (mid
== len(nums
)-1 or nums
[mid
+1] > nums
[mid
]):
return mid
if nums
[mid
] > target
:
high
= mid
-1
else:
low
= mid
+1
if low
> high
:
return -1
ans
= []
low
= findlow
(nums
,target
,0,len(nums
)-1)
high
= findhigh
(nums
,target
,0,len(nums
)-1)
ans
.append
(low
)
ans
.append
(high
)
return ans
转载请注明原文地址:https://ipadbbs.8miu.com/read-15094.html