#MF0002. 在排序数组中查找元素的第一个和最后一个位置

在排序数组中查找元素的第一个和最后一个位置

【题目描述】

给你一个从小到大排好序的整数数组 nums,还有一个目标数 target。

请你找出这个目标数在数组里第一次出现的位置,和最后一次出现的位置。

如果数组里根本没有这个目标数,就返回 [-1, -1]。

注意:你写的代码必须满足时间复杂度 O (log n)(简单说就是要用二分查找,不能挨个遍历)。

【输入说明】

  • 一个从小到大排好序的整数数组 nums(数组可能为空)
  • 一个整数 target(要找的目标数)

【输出说明】

返回一个包含两个数的数组:

第一个数是目标数第一次出现的位置,第二个数是最后一次出现的位置;

如果没找到目标数,就返回 [-1, -1]。

【输入输出样例】

输入​:

5 7 7 8 8 10
8

输出​:

3 4

【提示】

  1. 数组长度可以是 0(空数组),也可以最多有 10 万个数字
  2. 数组里的数字和目标数的范围:-10 亿~10 亿
  3. 数组里的数字只会从小到大排,不会乱序(比如不会出现 [5,3,7] 这种情况)