LeetCode--34.在排序数组中查找元素第一个和最后一个位置(二分法)
在排序数组中查找元素第一个和最后一个位置(C++)
- 1. 题目描述
- 2. 题目分析
- 3. C++语言实现
1. 题目描述
难度:中等
2. 题目分析
看到题目我们需要知道以下几点:
- 数组是有序的
- 数组中存在重复的元素
- 算法时间复杂度必须是O(logn)级别
- 目标元素可能不存在与数组中
根据题目要求,算法复杂度必须是O(logn)级别,那么二分法就是最佳的算法。根据本题,我们要寻找的是目标元素在数组的起始位置和结束位置,我们可以根据二分法先搜索目标元素的起始位置,然后以该起始位置为起点,在搜索结束位置即可。时间复杂度为O(logn)
3. C++语言实现
代码如下:
class Solution {public:vector<int> searchRange(vector<int>& nums, int target) {vector<int> res(2,-1);// 如果数组为空,直接返回[-1,-1]if(nums.empty()) return res;// 初始化变量int n=nums.size(),l=0,r=n-1;// 循环条件是左下标<右下标while(l<r){int m=l+(r-l)/2;if(nums[m]>=target) r=m;else l=m+1;}// 如果nums[l]!=target,说明目标不存在,返回[-1,-1]if(nums[l]!=target) return res;// 否则l即目标元素的起始位置res[0]=l;// 寻找右节点r=n;while(l<r){int m=l+(r-l)/2;if(nums[m]<=target) l=m+1;else r=m;}res[1]=l-1;return res;}
};
运行结果为:
LeetCode--34.在排序数组中查找元素第一个和最后一个位置(二分法)相关推荐
- leetcode(34)在排序数组中查找元素的第一个和最后一个位置
在排序数组中查找元素的第一个和最后一个位置 class Solution {public int[] searchRange(int[] nums, int target) {int len = nu ...
- 62. Leetcode 34. 在排序数组中查找元素的第一个和最后一个位置 (二分查找-局部有序)
给定一个按照升序排列的整数数组 nums,和一个目标值 target.找出给定目标值在数组中的开始位置和结束位置.如果数组中不存在目标值 target,返回 [-1, -1].进阶:你可以设计并实现时 ...
- leetcode —— 34. 在排序数组中查找元素的第一个和最后一个位置
给定一个按照升序排列的整数数组 nums,和一个目标值 target.找出给定目标值在数组中的开始位置和结束位置. 你的算法时间复杂度必须是 O(log n) 级别. 如果数组中不存在目标值,返回 [ ...
- leetcode 34. 在排序数组中查找元素的第一个和最后一个位置(二分查找)
给定一个按照升序排列的整数数组 nums,和一个目标值 target.找出给定目标值在数组中的开始位置和结束位置. 如果数组中不存在目标值 target,返回 [-1, -1]. 进阶: 你可以设计并 ...
- 2022-7-7 Leetcode 34.在排序数组中查找元素的第一个和最后一个位置
1.左右区间要单独查找,时间复杂度为O(logN)O(logN)O(logN) 2.查找右边界的时候,左边向右收缩:查找左边界的时候,右边向左收缩. class Solution {public:in ...
- LeetCode 34 在排序数组中查找元素的第一个和最后一个位置
https://leetcode-cn.com/problems/find-first-and-last-position-of-element-in-sorted-array/ 解决方案 class ...
- 去掉数组最后一个元素_leetcode 34. 在排序数组中查找元素的第一个和最后一个位置每天刷一道leetcode算法系列!...
作者:reed,一个热爱技术的斜杠青年,程序员面试联合创始人 前文回顾: leetcode1. 两数之和--每天刷一道leetcode系列! leetcode2. 两数相加--每天刷一道leetcod ...
- LeetCode (二分小专题)33搜索旋转排序数组34在排序数组中查找元素的第一个和最后一个位置35搜索插入位置
前言 国庆前最后一次打卡,国庆后继续开启,公众号bigsai回复进群欢迎加入打卡,如有帮助记得点赞收藏. 近期打卡记录: LeetCode 32最长有效括号(困难) (本周) LeetCode 30串 ...
- [算法]LeetCode 专题 -- 二分查找专题 34. 在排序数组中查找元素的第一个和最后一个位置
LeetCode 专题 – 二分查找专题 34. 在排序数组中查找元素的第一个和最后一个位置 难度:中等 题目描述 给定一个按照升序排列的整数数组 nums,和一个目标值 target.找出给定目标值 ...
最新文章
- 【转载】locust性能测试3
- 插入排序 链表 java_JAVA单链表(多项式)直接插入排序,大家看看我的怎么不行呢...
- webpack 教程 那些事儿05-多页应用
- 华为手机logcat不出日志解决方案
- 操作系统,你搞定了没?
- 【母亲节快乐】程序员的表达方式,了解一下?
- C语言及程序设计进阶例程-30 联合体及其应用
- 毁掉孩子自信的10个杀手
- 给java虚拟机增加一个属性,java -D
- MobileNetV3——论文翻译
- iOS申请真机调试证书 图文详解
- DirectX修复工具使用技巧之三——命令行与配置文件参数介绍
- 网络摄像机进行互联网视频直播录像方案的选择,EasyNVS or EasyCloud or EasyGBS?
- dsp正弦信号发生c语言,正弦信号发生器的DSP实现方法及比较
- LyricsX for Mac(桌面歌词显示器)
- 山寨免费软件的阴谋!
- 易企秀 背景音乐 下载
- MGN:Learning Discriminative Features with Multiple Granularities for Person Re-Identification阅读笔记
- 每日一题(day5)
- 2017电影经典语句