20200329

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

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

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

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

示例:

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

思路 :第一印象,升序二分。两次二分,分别查找lower和upper。

code

class Solution{public int[] searchRange(int[] nums,int target){int[] res = new int[2];if(nums.length == 0){res[0] = -1;res[1] = -1;return res;}res[0] = findFirst(nums,0,nums.length,target);res[1] = findLast(nums,0,nums.length,target);return res;}public int findFirst(int[] nums,int left, int right,int key){if(right < 1){return -1;}int l = left;int r = right -1;while(l<=r){int mid = (l + r)/2;if(nums[mid]==key&&(mid-1<0||nums[mid-1]!=key)){return mid;}else if(nums[mid]>=key){r = mid-1;}else{l = mid+1;}}return -1;}private int findLast(int[] nums,int left,int right, int key){if(right <1) return -1;int l = left;int r = right-1;while(l<=r){int mid = (l+r)/2;if(nums[mid]==key&&(mid+1>=right||nums[mid+1]!=key)){return mid;}else if(nums[mid]<=key){l = mid + 1;}else{r = mid -1;}}return -1;}
}

LeetCode(查找元素的第一个和最后一个位置)相关推荐

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

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

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

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

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

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

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

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

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

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

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

    题目: 在排序数组中查找元素的第一个和最后一个位置给定一个按照升序排列的整数数组 nums,和一个目标值 target.找出给定目标值在数组中的开始位置和结束位置.你的算法时间复杂度必须是 O(log ...

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

    在排序数组中查找元素的第一个和最后一个位置 给定一个按照升序排列的整数数组 nums,和一个目标值 target.找出给定目标值在数组中的开始位置和结束位置.如果数组中不存在目标值 target,返回 ...

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

    34. 在排序数组中查找元素的第一个和最后一个位置 https://leetcode-cn.com/problems/find-first-and-last-position-of-element-i ...

  9. 20200221:在排序数组中查找元素的第一个和最后一个位置(leetcode34)

    在排序数组中查找元素的第一个和最后一个位置 题目 思路与算法 代码实现 题目 思路与算法 题目要求了算法复杂度为O(logN),因此必须是二分查找来实现,但是其实最简单的思路应该就是顺序和逆序的遍历了 ...

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

    在排序数组中查找元素的第一个和最后一个位置 给定一个按照升序排列的整数数组 nums,和一个目标值 target.找出给定目标值在数组中的开始位置和结束位置. 如果数组中不存在目标值 target,返 ...

最新文章

  1. 金额大小写转换(1)
  2. ACM入门之【字典树/Trie】
  3. php+compose+使用,docker使用 docker-compose配置PHP环境(php+nginx+mysql)及启动
  4. java queue 实现类 区别_Java集合11 (Queue)
  5. 项目管理修炼之道之估算工作
  6. 使用expect命令打通所有集群机器
  7. oracle中插入一个blob数据
  8. 今天拿到一个TFS Workgroup Edition,想从B3R升级,结果开始了一天的艰难之路。。...
  9. java学生成绩管理系统不使用数据库_java学生成绩管理系统(不用数据库,用txt),写出来有报酬...
  10. 在 VMware 虚拟机中 安装 Windows7 精简版系统
  11. win10安装 vmware10
  12. 为什么看起来不是很复杂的网站,淘宝、腾讯却需要大量顶尖高手来开发?
  13. 单片机全局变量 局部变量 堆与栈
  14. 羽毛球之混双战术要点
  15. javascript常用工具类的封装
  16. FACEGOOD-Audio2Face(个人学习)
  17. 平方米用计算机怎么打,平方厘米用电脑怎么打
  18. 清爽即正义,简洁即真理—lingvist
  19. 懒人的漫画下载工具[基本能用版]
  20. 考研数据结构(2)笔记

热门文章

  1. matlab图片处理基本知识,Matlab图像处理基础知识
  2. mysql复制表结构并创建新表_mysql ---复制表结构---创建新表
  3. Android-MTK系统- 系统常用修改点
  4. 调用百度API(一)——百度翻译
  5. FPGA 之 SOPC 系列(三)Nios II 体系结构
  6. java round指令_java中Math.round()的用法
  7. 计算机保研面试 / 考研复试常见问题整理
  8. 《暮光之城》——如果那真的是你,就请你再勇敢一点、再直接一点,因为我早已经不可救药的爱上你了。你是吸血鬼也罢,你是致命危险也罢,你是什么,我都无所谓。
  9. 微信公众号首次关注自动回复图文信息
  10. python列表的负数索引