当前位置:网站首页>[binary search] 34 Find the first and last positions of elements in a sorted array
[binary search] 34 Find the first and last positions of elements in a sorted array
2022-07-05 05:16:00 【lee2813】
One 、 subject
Given an array of integers in ascending order nums, And a target value target. Find the start and end position of the given target value in the array .
If the target value does not exist in the array target, return [-1, -1].
Advanced :
You can design and implement time complexity of O(log n) Does the algorithm solve this problem ?
Example 1:
Input :nums = [5,7,7,8,8,10], target = 8
Output :[3,4]
Example 2:
Input :nums = [5,7,7,8,8,10], target = 6
Output :[-1,-1]
Example 3:
Input :nums = [], target = 0
Output :[-1,-1]
Two 、 Answer key
Solution 1 : Search for ( Time consuming )
Solution 2 : Two points search
Because the array is monotonically increasing , We can use the binary search method to speed up the search process . Here is also set as the left closed right closed interval .
When finding the corresponding element to determine whether it is the position of the first occurrence and the last occurrence of the given value , Use the following strategies :
- Finding the first occurrence position of a given value is equivalent to finding the first greater than ( Because there may be cases without this value ) Subscript equal to the given value
- Finding the last occurrence position of a given value is equivalent to finding the first subscript larger than the given value , subtracting 1
Take finding the location of the first occurrence as an example , The search results are as follows :
- The lookup value does not match the target value ( Less than the target ): Take the left range
- The search value matches the target value ( Greater than equal target value ): Take the right range
- Left boundary > Right border : return
l, Because the matching situation here is greater than or equal to , Moving isl, Therefore, it returnsl
among , The method of using dichotomy to determine the position of elements for comparison is the same , The comparison strategy is different .
3、 ... and 、 Code
class Solution {
public:
vector<int> searchRange(vector<int>& nums, int target) {
if(nums.size()==0) return vector<int>{
-1,-1};
int leftindex = fun1(nums,target);
int rightindex = fun2(nums,target);
if(leftindex==nums.size() || nums[leftindex] != target) return vector<int>{
-1,-1};
return vector<int>{
leftindex,rightindex};
}
int fun1(vector<int>& nums,int target){
int l = 0,r = nums.size() - 1;
int mid;
while(l<=r){
mid = (l + r) / 2;
if(nums[mid] >= target) r = mid - 1;
else l = mid + 1;
}
return l;
}
int fun2(vector<int>& nums,int target){
int l = 0,r = nums.size() - 1;
int mid;
while(l<=r){
mid = (l + r) / 2;
if(nums[mid] > target) r = mid - 1;
else l = mid + 1;
}
return l-1;
}
};
边栏推荐
- 3dsmax common commands
- 2022 / 7 / 1 Résumé de l'étude
- Solon 框架如何方便获取每个请求的响应时间?
- 嵌入式数据库开发编程(五)——DQL
- Applet Live + e - commerce, si vous voulez être un nouveau e - commerce de détail, utilisez - le!
- Es module and commonjs learning notes -- ESM and CJS used in nodejs
- BUUCTF MISC
- [paper notes] multi goal reinforcement learning: challenging robotics environments and request for research
- Simple modal box
- [turn to] MySQL operation practice (III): table connection
猜你喜欢
随机推荐
SDEI初探-透过事务看本质
Lua determines whether the current time is the time of the day
十年不用一次的JVM调用
一个新的微型ORM开源框架
Basic knowledge points
The next key of win generates the timestamp file of the current day
3dsmax snaps to frozen objects
3dsmax common commands
Romance of programmers on Valentine's Day
UE4/UE5 虚幻引擎,材质篇(三),不同距离的材质优化
Page countdown
Unity ugui source code graphic
2022/7/2 question summary
Bucket sort
Sqlserver stored procedures pass array parameters
Use the command character to close the keyboard command of the notebook
Do a small pressure test with JMeter tool
National teacher qualification examination in the first half of 2022
Pause and resume of cocos2dx Lua scenario
2022/7/1学习总结





![[转]: OSGI规范 深入浅出](/img/54/d73a8d3e375dfe430c2eca39617b9c.png)


