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

2021-10-11 23:50:17 字數 1274 閱讀 7086

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

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

高階:你可以設計並實現時間複雜度為 o(log n) 的演算法解決此問題嗎?

示例 1:

輸入:nums = [5,7,7,8,8,10], target = 8

輸出:[3,4]

示例 2:

輸入:nums = [5,7,7,8,8,10], target = 6

輸出:[-1,-1]

示例 3:

輸入:nums = , target = 0

輸出:[-1,-1]

0 <= nums.length <= 105

-109 <= nums[i] <= 109

nums 是乙個非遞減陣列

-109 <= target <= 109

public

int[

]searchrange

(int

nums,

int target);}

int left =

0, right = nums.length -1;

int first =

findfirst

(nums, left, right, target)

;//如果開始就沒找到就證明沒有

if(first ==-1

);}int last =

findlast

(nums, left, right, target)

;return

newint

;}private

intfindfirst

(int

nums,

int left,

int right,

int target)

else}if

(nums[left]

== target)

return-1

;}private

intfindlast

(int

nums,

int left,

int right,

int target)

else

}//不需要判斷了

return left;

}

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...