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

2021-08-30 11:10:49 字數 630 閱讀 3901

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

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

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

示例 1:

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

輸出: [3,4]

示例 2:

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

輸出: [-1,-1]

方法:二分法/雙指標。

思路:1,還是二分法先找到和目標值target相等的元素位置;

2,然後將該位置向前向後延伸,直到把所有和目標值匹配的元素索引都走完;

3,此時拿到的區間就是全部和target相等的元素;

class solution 

else if (target < nums[mid]) else

}res[0] = -1;

res[1] = -1;

return res;

}}

注意:i 和 j 最大最小值的控制判斷,因為要前後移動,所有只能在第二和倒二直接變化,避免陣列角標越界異常!

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