二分查詢求元素的第乙個位置和最後乙個位置

2021-10-23 22:57:34 字數 1120 閱讀 8451

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