34. 在排序数组中查找元素的第一个和最后一个位置|刷题打卡

100 阅读1分钟

一、题目描述:

给定一个按照升序排列的整数数组 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 春招闯关活动」, 点击查看 活动详情