对于数组的应用大家一定不会陌生,今天要介绍的就是两种有关数组中对于指定元素的查找问题.
1、给定一个排序的整数数组,找到给定目标值的起始位置和结束位置。
题目要求:
- 算法的运行时复杂度必须是O(log n)的顺序。
- 如果在数组中找不到目标,返回[-1,-1 ]。
示例:
- 输入数组a[ ]={1,2,3,3,4,4,5};target=3;
- 返回结果{2,3};
解题思路:
(1)定义左右指针left和right:left=0;right=n-1;
(2)当left小于right的时候,采用二分查找的方法查找指定数据,如果找到了就将left和right存起来,没找到就返回{-1,-1};
代码实现:
vector<int> searchRange(int A[], int n, int target) {
int left=0;
int right=n-1;
vector<int> res;
res.push_back(-1);
res.push_back(-1);
while(left<=right)
{
//找到了就将下标存起来
if(A[left]==targ

这篇博客介绍了如何在已排序的整数数组中找到目标值的起始和结束位置,以及搜索插入位置。通过二分查找算法,实现了O(log n)的时间复杂度解决方案。并提供了示例和解题思路。
最低0.47元/天 解锁文章
511

被折叠的 条评论
为什么被折叠?



