给定一个按照升序排列的整数数组 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]
public class Solution {public int[] searchRange(int[] nums, int target) {int[] result = new int[2];  result[0] = getBoundRange(nums, 0, nums.length-1, target, true);  result[1] = getBoundRange(nums, 0, nums.length-1, target, false);  return result;  }public int getBoundRange(int[]nums, int l, int r, int target, boolean left){  if(l>r){return -1;  }else{  int m = (l+r)/2;  if(nums[m]==target){  if(left){  if(m==0 || nums[m-1]<target) return m;  else return getBoundRange(nums, l, m-1, target, left);  }else {  if(m==nums.length-1 || target<nums[m+1]) return m;  else return getBoundRange(nums, m+1, r, target, left);  }  }else if (nums[m]>target) {  return getBoundRange(nums, l, m-1, target, left);  }else {  return getBoundRange(nums, m+1, r, target, left);  }  }  }
}

LeetCode 34. 在排序数组中查找元素的第一个和最后一个位置 Find First and Last Position of Element in Sorted Array相关推荐

  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. 2022-7-7 Leetcode 34.在排序数组中查找元素的第一个和最后一个位置

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

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

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

  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. 成长必须避开的5个陷阱
  2. 我所经历的大文件数据导出(后台执行,自动生成)
  3. 苹果原壁纸高清_苹果壁纸 | 高清图片全面屏壁纸
  4. Linux gcc/g++链接编译顺序详解
  5. jit即时编译_热点中的即时编译器(JIT)
  6. Linux命令:grep命令详解
  7. 初识java中数组、数组在内存中、越界异常、空指针异常
  8. 现在的00后都这么牛X的吗?
  9. 从搭建大数据环境说起,到执行WordCount所遇到的坑
  10. 十种最受前辈宠爱的职场新人
  11. Python继承范例
  12. 诺基亚Ovi商店开卖《水果忍者》
  13. php 抽签,javascript随机抽签程序
  14. 数据结构 队列的结构特点及基本操作
  15. python 源代码 macd双底 高 低_MACD双底,三底背离公式指标
  16. 基于stata的medsens包进行中介效应分析
  17. secret学习笔记
  18. C++实现matlab中的interp1和interp2插值
  19. 点击input时,不显示边框!
  20. 小编程(二):Matlab中num2str实现数字1到字符串0001的变换

热门文章

  1. yocto 编译与bb的语法
  2. 【MATLAB】MATLAB 仿真 — 模拟调制系统 之 AM 调制过程
  3. win7 计算机设置命令,win7系统如何设置自动关机?
  4. 水滴的“创益矩阵”:“万物”皆可连接公益
  5. EINT DINT ERTM DRTM EALLOW EDIS ESTOP0的理解
  6. Ubuntu衍生发行版使用体验(lubuntu、xubuntu、kubuntu)
  7. Linux是怎么来的?终于有一篇文章讲清楚了
  8. php阴历阳历互转类(1900~2100年)
  9. 均匀分布的期望和方差的推导_均匀分布的数学期望与方差 常见分布的数学期望和方差...
  10. java导出excel设置行高列宽_POI精确设置Excel的行高和列宽