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

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

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

如果数组中不存在目标值,返回 [-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]

来源:力扣(LeetCode)
链接:https://leetcode-cn.com/problems/find-first-and-last-position-of-element-in-sorted-array
著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。

PS:先说一个简单的(运用Java强大的JDK)

class Solution {public int[] searchRange(int[] nums, int target) {int i = Arrays.binarySearch(nums, target);if (i<0) return new int[]{-1,-1};int begin = i;int end = i;while (begin-1>=0 && nums[begin-1]==target) {begin--;}while (end+1<nums.length && nums[end+1]==target) {end++;}return new int[]{begin,end};}
}

PS:二分法

class Solution {public int[] searchRange(int[] nums, int target) {int i = 0, j = nums.length;int mid = (i + j) / 2;int p = -1;while (i < j) {  //找到target的位置if (nums[mid] == target) {p = mid;break;}if (nums[mid] > target) {if (j == mid) break;j = mid;mid = (i + j) / 2;} else {if (i == mid) break;i = mid;mid = (i + j) / 2;}}if (p == -1) {return new int[]{-1, -1};} else {  //在target所在位置向前向后查找int a = p, b = p;while (a > 0 && nums[a - 1] == target) a--;while (b < nums.length - 1 && nums[b + 1] == target) b++;return new int[]{a, b};}}
}

Java实现 LeetCode 34 在排序数组中查找元素的第一个和最后一个位置相关推荐

  1. leetcode(34)在排序数组中查找元素的第一个和最后一个位置

    在排序数组中查找元素的第一个和最后一个位置 class Solution {public int[] searchRange(int[] nums, int target) {int len = nu ...

  2. 62. Leetcode 34. 在排序数组中查找元素的第一个和最后一个位置 (二分查找-局部有序)

    给定一个按照升序排列的整数数组 nums,和一个目标值 target.找出给定目标值在数组中的开始位置和结束位置.如果数组中不存在目标值 target,返回 [-1, -1].进阶:你可以设计并实现时 ...

  3. leetcode —— 34. 在排序数组中查找元素的第一个和最后一个位置

    给定一个按照升序排列的整数数组 nums,和一个目标值 target.找出给定目标值在数组中的开始位置和结束位置. 你的算法时间复杂度必须是 O(log n) 级别. 如果数组中不存在目标值,返回 [ ...

  4. leetcode 34. 在排序数组中查找元素的第一个和最后一个位置(二分查找)

    给定一个按照升序排列的整数数组 nums,和一个目标值 target.找出给定目标值在数组中的开始位置和结束位置. 如果数组中不存在目标值 target,返回 [-1, -1]. 进阶: 你可以设计并 ...

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

    https://leetcode-cn.com/problems/find-first-and-last-position-of-element-in-sorted-array/ 解决方案 class ...

  6. 2022-7-7 Leetcode 34.在排序数组中查找元素的第一个和最后一个位置

    1.左右区间要单独查找,时间复杂度为O(logN)O(logN)O(logN) 2.查找右边界的时候,左边向右收缩:查找左边界的时候,右边向左收缩. class Solution {public:in ...

  7. 去掉数组最后一个元素_leetcode 34. 在排序数组中查找元素的第一个和最后一个位置每天刷一道leetcode算法系列!...

    作者:reed,一个热爱技术的斜杠青年,程序员面试联合创始人 前文回顾: leetcode1. 两数之和--每天刷一道leetcode系列! leetcode2. 两数相加--每天刷一道leetcod ...

  8. LeetCode (二分小专题)33搜索旋转排序数组34在排序数组中查找元素的第一个和最后一个位置35搜索插入位置

    前言 国庆前最后一次打卡,国庆后继续开启,公众号bigsai回复进群欢迎加入打卡,如有帮助记得点赞收藏. 近期打卡记录: LeetCode 32最长有效括号(困难) (本周) LeetCode 30串 ...

  9. [算法]LeetCode 专题 -- 二分查找专题 34. 在排序数组中查找元素的第一个和最后一个位置

    LeetCode 专题 – 二分查找专题 34. 在排序数组中查找元素的第一个和最后一个位置 难度:中等 题目描述 给定一个按照升序排列的整数数组 nums,和一个目标值 target.找出给定目标值 ...

  10. 34. 在排序数组中查找元素的第一个和最后一个位置给你一个按照非递减顺序排列的整数数组 nums,和一个目标值 target。请你找出给定目标值在数组中的开始位置和结束位置。如果数组中不存在目标

    34. 在排序数组中查找元素的第一个和最后一个位置 难度中等2012 给你一个按照非递减顺序排列的整数数组 nums,和一个目标值 target.请你找出给定目标值在数组中的开始位置和结束位置. 如果 ...

最新文章

  1. 1月国内操作系统市场:Windows XP份额高达60.84%
  2. 北京关于领取2021年上半年合格证书的通知
  3. boost::io::quoted用法的测试程序
  4. Web开发入门疑问收集(不定期更新)
  5. 数据结构实验之栈五:下一较大值(一)
  6. Transactional Replication2:在Subscriber中,主键列是只读的
  7. 2022年的第一个工作日,整理了风控的这些内容
  8. UE4学习-初识虚幻引擎(下载、安装、重定向问题、安装引擎、启动)
  9. Windows 自带的 UTF8 字符 颜文字表情符号
  10. office2016镜像安装详细教程
  11. 【图文讲解】映射——单射-双射-满射概念
  12. NSSCTF web题记录
  13. 求一个数组的非空子集
  14. 总结篇:消息中间件MQ的学习境界和路线
  15. php word组件使用方法,phpword使用笔记
  16. 解决电脑无法进入休眠/睡眠状态,而仅关闭屏幕的问题
  17. linux下的rtc机制
  18. js控制右侧滚动条事件
  19. CSS的鼠标手势实现
  20. 终于找到了T5L串口屏按键值不能上传的原因

热门文章

  1. office 2019中文
  2. Android自定义带搜索图标及删除按钮的搜索框SearchEditText
  3. 作业四:结对编程项目--四则运算
  4. Ubuntu18.04-ROS-Python-通过周立功Can发送16进制整数
  5. QCC3071与QCC3072有什么区别?
  6. 从入门到成佛--电商平台搭建--前端教程--环境搭建
  7. html输入日期算出星座,如何通过日期计算星座
  8. 根据日期算星座 mysql,Hive 通过日期计算星座实例
  9. MySQL使用order by默认是升序还是降序?
  10. 【NLP】非监督文本匹配算法——BM25