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

2021-09-26 21:54:30 字數 923 閱讀 1274

給定乙個按照公升序排列的整數陣列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]
分析:

先使用二分查詢,找到 target 的下標,然後往兩邊遍歷,得到出現這個數字範圍

class solution 

// 查詢成功,繼續往兩邊搜尋

int left, right;

left = right = mid;

// 往兩邊搜尋這個數字

while(left >= 0)

while(right < nums.size())

result[0] = left + 1;

result[1] = right - 1;

return result;

}// 二分查詢,返回下標

int binary_search(vector& nums, int start, int end, int target)else if(nums[mid] < target)else

}return -1;

}};

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