CodeACM
HOT 100 · 二分查找 · LC 34

在排序数组中查找元素的第一个和最后一个位置:ACM 模式刷题

按标准输入读取测试数据,输出结果后可在 CodeACM 在线运行和提交。

题目描述

给你一个按照非递减顺序排列的整数数组 nums,和一个目标值 target。请你找出给定目标值在数组中的开始位置和结束位置。

如果数组中不存在目标值 target,返回 [-1, -1]。

你必须设计并实现时间复杂度为 O(log n) 的算法解决此问题。

输入格式

第一行输入 n 和 target,第二行输入 n 个非递减整数。

输出格式

输出两个整数,表示 target 出现范围的左右端点。

数据范围

  • 0 ≤ n ≤ 10⁵
  • −10⁹ ≤ nums[i], target ≤ 10⁹

公开样例

样例 1

输入

6 8
5 7 7 8 8 10

输出

3 4

目标值 8 出现在下标 3 到 4。

样例 2

输入

6 6
5 7 7 8 8 10

输出

-1 -1

数组中不存在 6。

练习建议

先根据输入输出格式写出可运行程序,再用公开样例检查结果;遇到边界情况时,补充自测用例后提交。