一、题目描述:
给定一个按照升序排列的整数数组 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。
作者:ClyingDeng
链接:https://juejin.cn/post/6937222582630842376
来源:稀土掘金
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。