千锋教育-做有情怀、有良心、有品质的职业教育机构

400-811-9990
手机站
千锋教育

千锋学习站 | 随时随地免费学

千锋教育

扫一扫进入千锋手机站

领取全套视频
千锋教育

关注千锋学习站小程序
随时随地免费学习课程

上海
  • 北京
  • 郑州
  • 武汉
  • 成都
  • 西安
  • 沈阳
  • 广州
  • 南京
  • 深圳
  • 大连
  • 青岛
  • 杭州
  • 重庆
当前位置:郑州千锋IT培训  >  技术干货  >  在排序数组中查找元素的第一个和最后一个位置

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

来源:千锋教育
发布人:qyf
时间: 2022-11-10 15:34:05

  题目描述

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

  你的算法时间复杂度必须是 O(log n) 级别。

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

  示例:

  输入: nums = [5,7,7,8,8,10], target = 8

  输出: [3,4]

  输入: nums = [5,7,7,8,8,10], target = 6

  输出: [-1,-1]

  题目解析

  题目中要求了时间复杂度为O(log n),这就很清楚要使用二分查找法了。

  首先定义两个指针变量,分别存储左右两个位置的索引。首先去找目标值的最左面的索引,通过循环为了防止元素丢失,每次保留最右面的元素,左侧的指针移动时+1。在循环结束的时候判断一下数组中是否包括目标值,不包括的话直接退出。 右面的跟左侧相同,只不过正好相反。

  代码实现

1

声明:本站稿件版权均属千锋教育所有,未经许可不得擅自转载。

猜你喜欢LIKE

类的加载机制是什么

2023-03-21

如何定义Java变量?

2023-03-14

细节决定成败:探究Mybatis中javaType和ofType的区别

2023-03-09

最新文章NEW

java实现多线程的几种方式

2023-03-21

java编程spring框架的作用

2023-03-21

什么是java中的进制

2023-03-17

相关推荐HOT

更多>>

快速通道 更多>>

最新开班信息 更多>>

网友热搜 更多>>