leetcode 18 在排序陣列中查詢元素

2022-06-13 03:45:12 字數 879 閱讀 5111

給定乙個按照公升序排列的整數陣列 nums,和乙個目標值 target。找出給定目標值在陣列中的開始位置和結束位置。

你的演算法時間複雜度必須是 o(log n) 級別。

如果陣列中不存在目標值,返回 [-1, -1]。

二分查詢,然後再遞迴二分查詢[head,mid-1],[mid+1,tail],結果絕世[right_1,right_2],mid,[left_1,left_2]的結果中的合法最大值

class solution:

def searchrange(self, nums, target: int):

if len(nums)==0:return [-1,-1]

head = 0

tail = len(nums)-1

find = none

while head<=tail:

mid = (head+tail)//2

if nums[mid]target:tail = mid-1

else:

find = mid

break

if find is none:return [-1,-1]

ans = [mid,mid]

left = self.searchrange(nums[head:mid],target)

ans[0] = left[0]+head if left[0]>=0 else ans[0]

right = self.searchrange(nums[mid+1:tail+1],target)

ans[1] = right[1]+mid+1 if right[0]>=0 else ans[1]

return ans

乙個二分找最大右,乙個二分找左

LeetCode打卡18 刪除排序陣列中的重複項

給定乙個排序陣列,你需要在原地刪除重複出現的元素,使得每個元素只出現一次,返回移除後陣列的新長度。不要使用額外的陣列空間,你必須在原地修改輸入陣列並在使用 o 1 額外空間的條件下完成。示例 1 給定陣列 nums 1,1,2 函式應該返回新的長度 2,並且原陣列 nums 的前兩個元素被修改為 1...

LeetCode 18 四數之和

給定乙個包含 n 個整數的陣列 nums 和乙個目標值 target,判斷 nums 中是否存在四個元素 a,b,c 和 d 使得 a b c d 的值與 target 相等?找出所有滿足條件且不重複的四元組。注意 答案中不可以包含重複的四元組。示例 給定陣列 nums 1,0,1,0,2,2 和 ...

LeetCode 18 四數之和

給定乙個包含 n 個整數的陣列nums和乙個目標值target,判斷nums中是否存在四個元素 a,b,c 和 d 使得 a b c d 的值與target相等?找出所有滿足條件且不重複的四元組。注意 答案中不可以包含重複的四元組。示例 給定陣列 nums 1,0,1,0,2,2 和 target ...