一、题目描述:
给定一个按照升序排列的整数数组 nums,和一个目标值 target。找出给定目标值在数组中的开始位置和结束位置。
如果数组中不存在目标值 target,返回 [-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]
示例 3:
输入:nums = [], target = 0
输出:[-1,-1]
提示:
- 0 <= nums.length <= 10^5
- -10^9 <= nums[i] <= 10^9
- nums 是一个非递减数组
- -10^9 <= target <= 10^9
二、思路分析:
思路一:
循环数组,将等于目标值的下标存储到数组arr中。
判断数组长度,如果为0,则未匹配上返回[-1, -1];不为0,则返回arr中的第一个和最后一个数。
三、AC 代码:
方法一:
function searchRange(nums: number[], target: number): number[] {
let arr = [];
for (let i = 0; i < nums.length; i++) {
if (nums[i] === target) {
arr.push(i);
}
}
if (arr.length === 0) return [-1, -1];
return [arr[0], arr[arr.length - 1]];
}
四、总结:
使用变量存储中间值。
题目来源:leetcode。
本文正在参与「掘金 2021 春招闯关活动」, 点击查看 活动详情。