来源:力扣(LeetCode)
链接:https://leetcode-cn.com/problems/find-first-and-last-position-of-element-in-sorted-array
题目
给定一个按照升序排列的整数数组 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的位置,再计算该数的个数,即可确定最后一个target的位置。
vector<int> searchRange(vector<int>& nums, int target)
{
int start = -1, end = 0;
int count = 0;
if (nums.empty())
{
return { -1,-1 };
}
for (int i = 0; i < nums.size(); i++)
{
if (nums[i] == target)
{
start = i;
break;
}
}
for (int i = 0; i < nums.size(); i++)
{
if (nums[i] == target )
{
count++;
}
end = start + count -1;
}
if (start == -1)
{
return{ -1,-1 };
}
return { start,end };
}