leetcode(二分查找)34.在排序数组中查找元素的第一个和最后一个位置(C++详细解释)DAY11

文章目录

  • 1.题目
    • 示例
    • 提示
  • 2.解答思路
  • 3.实现代码
    • 结果
  • 4.总结

1.题目

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

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

你必须设计并实现时间复杂度为 O(log n) 的算法解决此问题。

示例

在这里插入图片描述

提示

在这里插入图片描述

2.解答思路

提取信息:
1.时间复杂度必须为O(logn)
2.没查找到时返回{-1,-1}查找到就返回下标

本题难点:二分查找的实现:
查找第一个小于target和第一个大于target的值

3.实现代码

class Solution {
public:vector<int> searchRange(vector<int>& nums, int target) {vector<int>ans;int n=nums.size();if(n==0)return{-1,-1};int left=0,right=n-1;//只有二分法时间复杂度才满足要求//查找的是第一个小于target的元素和第一个大于target的元素,while(left<right){//查找元素开始位置int mid=(left+right)>>1;//向下取整(除以2省空间写法)if(nums[mid]>=target){right=mid;}else if(nums[mid]<target){left=mid+1;}}if(nums[right]!=target)return{-1,-1};//查找失败ans.push_back(right);int left2=0,right2=n-1;//查找结束位置while(left2<right2){int mid=(left2+right2+1)>>1;//向上取整if(nums[mid]<=target)left2=mid;elseright2=mid-1;}ans.push_back(right2);return ans;}
};

结果

在这里插入图片描述
用时约两个小时+,目前的解法性能不是很好,有时间继续改进。

4.总结

本来以为挺简单的一道题,题不可貌相。
限定的时间复杂度决定了只能使用二分查找,二分查找的细节还需要好好整理一下,再完善该题。

自信,坚持,upup~

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/683939.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

SECS/GEM的HSMS通讯?金南瓜方案

High Speed SECS Message Service (HSMS) 是一种基于 TCP/IP 的协议&#xff0c;它使得 SECS 消息通信更加快速。这通常用作设备间通信的接口。 HSMS 状态逻辑变化&#xff08;序列&#xff09;&#xff1a; 1.Not Connected&#xff1a;准备初始化 TCP/IP 连接&#xff0c;但尚…

【C深度解剖】取模与取余

简介&#xff1a;本系列博客为C深度解剖系列内容&#xff0c;以某个点为中心进行相关详细拓展 适宜人群&#xff1a;已大体了解C语法同学 作者留言&#xff1a;本博客相关内容如需转载请注明出处&#xff0c;本人学疏才浅&#xff0c;难免存在些许错误&#xff0c;望留言指正 作…

mac安装openjdk

解压 linxiang192 ~ % cd /Users/linxiang/Work linxiang192 Work % ls -all total 379032 drwxr-xr-x 7 linxiang staff 224 2 15 17:10 . drwxr-x--- 27 linxiang staff 864 2 15 17:16 .. -rw-r--r-- 1 linxiang staff 6148 2 15 17:10 .DS_…

SpringCloud之Nacos用法笔记

SpringCloud之Nacos注册中心 Nacos注册中心nacos启动服务注册到Nacosnacos服务分级模型NacosRule负载均衡策略根据集群负载均衡加权负载均衡Nacos环境隔离-namespace Nacos与eureka的对比临时实例与非临时实例设置 Nacos配置管理统一配置管理微服务配置拉取配置自动刷新远端配置…

1903. 字符串中的最大奇数【简单】

1903. 字符串中的最大奇数 题目描述 给你一个字符串 num &#xff0c;表示一个大整数。请你在字符串 num 的所有 非空子字符串 中找出 值最大的奇数 &#xff0c;并以字符串形式返回。如果不存在奇数&#xff0c;则返回一个空字符串 "" 。 子字符串是字符串中的一个…

你好,C++(14)用表达式表达我们的设计意图——4.1 用操作符对数据进行运算

第4章 将语句编织成程序 学过C中的各种数据类型&#xff0c; 就知道如何使用各种数据类型定义变量来描述现实世界中的各种事物了。现在&#xff0c;我们可以将一个工资统计程序大致写成下面这个样子&#xff1a; // 工资统计程序 int main() {// 表示员工个数的常量NUMconst i…

1232.缀点成线(Java)

题目描述&#xff1a; 给定一个数组 coordinates &#xff0c;其中 coordinates[i] [x, y] &#xff0c; [x, y] 表示横坐标为 x、纵坐标为 y 的点。请你来判断&#xff0c;这些点是否在该坐标系中属于同一条直线上。 输入&#xff1a; coordinates [[1,2],[2,3],[3,4],[4,5]…

(力扣记录)102. 二叉树的层序遍历

数据结构&#xff1a;树&#x1f332; 时间复杂度&#xff1a;O(n) 空间复杂度&#xff1a;O(n) 代码实现&#xff1a; class Solution:def levelOrder(self, root: Optional[TreeNode]) -> List[List[int]]:if not root: return []res []q [root]while q:curr []for…

机器学习:数据集划分笔记

数据集划分是机器学习中非常关键的步骤&#xff0c;能直接影响模型的训练效果和泛化能力。它的主要目的是为了评估模型对新数据的泛化能力&#xff0c;即模型在未见过的数据上能表现良好。 数据集通常被划分为三个部分&#xff1a;训练集&#xff08;Training set&#xff09;、…

Spring boot整合redisson报错

Spring boot整合redisson报错 org.redisson.client.RedisConnectionException: Unable to connect to Redis server: localhost/127.0.0.1:6379 原因 原因是计算机连接不上redis导致的 解决方案 重启redis 在redis文件目录下打开cmd 1.检查redis是否在运行 redis-cli p…

AutoSAR(基础入门篇)9.5-实验:配置通信

目录 一、为通信创建Ports 二、Data Mapping 三、Task Mapping 四、实验总结 终于到了实验篇了,前面的通信内容大家可能看的有点懵,这里确实没什么好的讲解顺序,所以博主自己也觉得讲的有点乱。但是不要紧,前面讲的通信的内容基本上大家很难用到。特别是对于初学者来说…

问题:实行网络化管理,为此需要做好以下几个方面的工作。() #知识分享#其他#职场发展

问题&#xff1a;实行网络化管理&#xff0c;为此需要做好以下几个方面的工作。() A、建立“公共部门—私人部门—第三部门”的合作网络 B、采用平等协商、双向互动、共同参与的决策方式&#xff0c;参与式决策应当成为网络化管理中的主要决策方式 C、建立“公共部门—私人部…

vue axios 请求后端无法传参问题

vue请求后端无法传参问题 问题描述处理过程总结 问题描述 在学习vue时&#xff0c;使用axios调用后端&#xff0c;发现无法把参数正确传到后端&#xff0c;现象如下&#xff1a; 使用vue发起请求&#xff0c;浏览器上已经有传参&#xff0c;但是后端没接收到对应的用户名密码&…

算法之贪心

1.部分背包问题 代码1&#xff1a; 代码2&#xff1a; 但如果金币不能分割&#xff0c;那贪心就不是最优解&#xff0c;正确的做法是搜索或动态规划。 2.排队接水 3.在规定时间内参加最多的比赛 4.合并果子 使用memset初始化int数组时&#xff0c;第二个参数如果是0&#xff0…

Vue源码系列讲解——模板编译篇【五】(优化阶段)

1. 前言 在前几篇文章中&#xff0c;我们介绍了模板编译流程三大阶段中的第一阶段模板解析阶段&#xff0c;在这一阶段主要做的工作是用解析器将用户所写的模板字符串解析成AST抽象语法树&#xff0c;理论上来讲&#xff0c;有了AST就可直接进入第三阶段生成render函数了。其实…

uniapp 开发一个密码管理app

密码管理app 介绍 最近发现自己的账号密码真的是太多了&#xff0c;各种网站&#xff0c;系统&#xff0c;公司内网的&#xff0c;很多站点在登陆的时候都要重新设置密码或者通过短信或者邮箱重新设置密码&#xff0c;真的很麻烦 所以准备开发一个app用来记录这些站好和密码…

软件风险分类整理

软件项目风险分类整理 1.需求分析 2.软件设计 3.编码和单元测试 4.集成和测试 5.验收和维护 6.团队管理 7.成本管理 8.组织管理

事务及在SpringBoot项目中使用的两种方式

1.事务简介 事务&#xff08;transaction&#xff09;是访问并可能操作各种数据项的一个数据库操作序列&#xff0c;这些操作要么全部执行&#xff0c;要么全部不执行&#xff0c;是一个不可分割的工作单位。 事物的四大特性: 原子性&#xff08;Atomicity&#xff09;&#xf…

ubuntu22.04@laptop OpenCV Get Started: 010_blob_detection

ubuntu22.04laptop OpenCV Get Started: 010_blob_detection 1. 源由2. blob应用Demo2.1 C应用Demo2.2 Python应用Demo 3. 重点分析3.1 Threshold3.2 Area3.3 Circularity3.4 Convexity3.5 Inertia Ratio 4. 总结5. 参考资料6. 补充 1. 源由 Blob是图像中的一组连接像素&#…

Go教程-Go语言简介

这篇文章我们来聊聊Go语言。 Go语言发展历史 以下是Go语言发展的几个里程碑节点&#xff1a; Go一开始是Google内部的一个项目&#xff0c;由三位大佬Rob Pike、Robert Griesemer、Ken Thompson早2007年发起。在2009年11月&#xff0c;Go语言正式对外开源。在2010年&#xf…