題目:
給定乙個按照公升序排列的整數陣列 nums,和乙個目標值 target。找出給定目標值在陣列中的開始位置和結束位置。
要求:演算法時間複雜度必須是 o(log n) 級別。
如果陣列中不存在目標值,返回 [-1, -1]。
class
solution
else
mid =
(left + right)/2
;if(left > right)
return res;
} left = right = mid;
while
(left >=
0&& nums[left]
== target) left--
; res[0]
= left +1;
while
(right < nums.
size()
&& nums[right]
== target) right++
; res[1]
= right -1;
return res;}}
;
題解:
採用二分法先將目標值的位置找到,然後根據這個位置向左向右查詢,找到最左端位置為元素的第乙個位置,最右邊端位置為元素的最後乙個位置。
需要注意查詢最左端最右端的位置時,left 多減了一次,right 多加了一次。
034在排序陣列中查詢元素的第乙個和最後乙個
1 include 000庫函式.h 2 3 使用二分法查詢到目標值的位置,然後分兩邊再查詢出起始位置和終止位置4 16ms 不是嚴格意義上的logn的複雜度 5class solution 9int i 0,j nums.size 1 10 int m 1 11 while i j 17if nu...
PHP 在排序陣列中查詢元素的第乙個和最後乙個位置
給定乙個按照公升序排列的整數陣列 nums,和乙個目標值 target。找出給定目標值在陣列中的開始位置和結束位置。你的演算法時間複雜度必須是 o log n 級別。如果陣列中不存在目標值,返回 1,1 示例 1 輸入 nums 5,7,7,8,8,10 target 8 輸出 3,4 示例 2 輸...
34 在排序陣列中查詢元素的第乙個和最後乙個位置
給定乙個按照公升序排列的整數陣列nums,和乙個目標值target。找出給定目標值在陣列中的開始位置和結束位置。你的演算法時間複雜度必須是o log n 級別。如果陣列中不存在目標值,返回 1,1 輸入 nums 5,7,7,8,8,10 target 8 輸出 3,4 輸入 nums 5,7,7,...