当前位置: 首页 > news >正文

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

文章目录

    • 力扣题目
    • 代码

力扣题目

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

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

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

示例 1:

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

输入:nums = [5,7,7,8,8,10], target = 6
输出:[-1,-1]
示例 3:

输入:nums = [], target = 0
输出:[-1,-1]

提示:

0 <= nums.length <= 105
-109 <= nums[i] <= 109
nums 是一个非递减数组
-109 <= target <= 109

代码

思路分析:使用两次查找
1.第一次找到第一个target的位置;
2.第二次找到最后一个target的位置;
3.需要特别注意的是第一次查找找到target时,做的right = mid - 1;以及第二次查找找到target时,做的left = mid + 1;这两次的操作特别重要。只有这样才能找两遍target的边界值。代码中也写了详细的注释,希望大家认真看一下。

int* searchRange(int* nums, int numsSize, int target, int* returnSize) 
{int first = -1, last = -1;int left = 0, right = numsSize - 1, mid = 0;int* arr = (int*)malloc(sizeof(int) * 2);/*查找一个等于target的位置*/while (left <= right){mid = left + (right - left) / 2;if (nums[mid] == target){first = mid;/*查看mid位置的左侧是否还有等于target的值,确保first的的索引是第一个target的位置*/right = mid - 1;}else if (nums[mid] > target){right = mid - 1;}else{left = mid + 1;}}left = 0;right = numsSize - 1;/*查找最后一个等于target的位置*/while (left <= right){mid = left + (right - left) / 2;if (nums[mid] == target){last = mid;/*查看mid位置的右侧是否还有等于target的值,确保last的的索引是最后一个target的位置*/left = mid + 1;}else if (nums[mid] > target){right = mid - 1;}else{left = mid + 1;}}*returnSize = 2;arr[0] = first;arr[1] = last;return arr;    
}

相关文章:

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

文章目录 力扣题目代码 力扣题目 给你一个按照非递减顺序排列的整数数组 nums&#xff0c;和一个目标值 target。请你找出给定目标值在数组中的开始位置和结束位置。 如果数组中不存在目标值 target&#xff0c;返回 [-1, -1]。 你必须设计并实现时间复杂度为 O(log n) 的算…...

Cesium笔记 初始化 使用Vue-Cesium 组件

参考 A Vue 3 based component library of CesiumJS for developers | Vue for CesiumVue for Cesium, a Vue 3.x based component library of CesiumJS for GISerhttps://zouyaoji.top/vue-cesium/#/zh-CN/component/quickstart...

QTday2作业

思维导图: 使用手动连接&#xff0c;将登录框中的取消按钮使用qt4版本的连接到自定义的槽函数中&#xff0c;在自定义的槽函数中调用关闭函数; 将登录按钮使用qt5版本的连接到自定义的槽函数中&#xff0c;在槽函数中判断u界面上输入的账号是否为"admin"&#xff0c…...

scVI与MultiVI

scVI&#xff1a;https://docs.scvi-tools.org/en/stable/user_guide/models/scvi.html MultiVI&#xff1a;https://docs.scvi-tools.org/en/stable/user_guide/models/multivi.html 目录 scVI生成推理任务 MultiVI生成推理 scVI single cell variational inference提出了一个…...

java Servlet体育馆运营管理系统myeclipse开发mysql数据库网页mvc模式java编程计算机网页设计

一、源码特点 JSP 体育馆运营管理系统是一套完善的java web信息管理系统&#xff0c;对理解JSP java编程开发语言有帮助&#xff0c;系统采用serlvetdaobean&#xff0c;系统具有完整的源代码和数据库&#xff0c;系统主要采用 B/S模式开发。 java Servlet体育馆运营管理系…...

2、UML类图

UML(Unified Modeling Language)统一建模语言&#xff0c;用来进行设计软件的可视化建模语言。 2.1 类图概述 类类图(Class diagram)是显示了模型的静态结构&#xff0c;特别是模型中存在的类、类的内部结构以及他们与其他类的关系等。类图是面向对象建模的主要组成部分。 2.…...

2023 年度合辑 | 出海大年的全球化产品洞察和服务动向

2023 年度合辑 年度关键词 出海&全球化 出海 & 全球化通信服务全面升维 出海大年&#xff0c;融云全球互联网通信云作为“全球化最佳基础设施”之一&#xff0c;发挥技术沉淀和实践积累带来的核心优势&#xff0c;结合市场变化对出海 & 全球化通信服务进行了全方位…...

python 基础笔记

基本数据类型 函数 lamda 匿名函数 成员方法 类 类与对象 构造方法 魔术方法 私有成员 私有方法 继承 注解 变量注解 函数注解 Union类型 多态 参考链接&#xff1a;黑马程序员python教程&#xff0c;8天python从入门到精通&#xff0c;学python看这套就够了_哔哩哔哩_bilib…...

[原创][R语言]股票分析实战[8]:因子与subset的关系

[简介] 常用网名: 猪头三 出生日期: 1981.XX.XX QQ联系: 643439947 个人网站: 80x86汇编小站 https://www.x86asm.org 编程生涯: 2001年~至今[共22年] 职业生涯: 20年 开发语言: C/C、80x86ASM、PHP、Perl、Objective-C、Object Pascal、C#、Python 开发工具: Visual Studio、D…...

uniapp使用tcp和udp的区别和例子

在Node.js中&#xff0c;主要有三种socket&#xff1a;TCP&#xff0c;UDP和Unix域套接字。以下分别介绍这TCP/UDP的使用方法和示例&#xff1a; TCP socket TCP socket提供了可靠的、面向连接的通信流&#xff0c;适用于需要可靠传输的应用&#xff0c;例如Web浏览器的HTTP请…...

静态网页设计——个人图书馆(HTML+CSS+JavaScript)(dw、sublime Text、webstorm、HBuilder X)

前言 声明&#xff1a;该文章只是做技术分享&#xff0c;若侵权请联系我删除。&#xff01;&#xff01; 感谢大佬的视频&#xff1a; https://www.bilibili.com/video/BV1VN4y1q7cz/?vd_source5f425e0074a7f92921f53ab87712357b 源码&#xff1a;https://space.bilibili.co…...

APP出海需知——Admob广告变现竞价策略

越来越多的出海公司更加重视应用的广告变现&#xff0c;Admob因其提供丰富的广告资源&#xff0c;稳定的平台支持&#xff0c;被广泛采用接入。 Admob广告变现策略 1、bidding竞价策略 Bidding目前是Admob广泛推广的较成熟的变现方案&#xff0c;当竞价网络和瀑布流混合时&a…...

微服务实战系列之API加密

前言 随着一阵阵凛冽寒风的呼啸&#xff0c;新的年轮不知不觉滚滚而来。故事随着2023的远去&#xff0c;尘封于案底&#xff1b;希望迎着新年&#xff0c;绽放于枝头。在2024新岁启航&#xff0c;扬帆破浪之时&#xff0c;让烦恼抛洒于九霄&#xff0c;让生机蓬勃于朝朝暮暮。 …...

android apk文件的签名问题

android的APK文件实际上是一个jar文件。jar的意思是瓶、罐&#xff0c;那就意味着jar文件是一个用来存放android应用相关文件的容器。事实上&#xff0c;它也确实如此&#xff0c;它只是一个带或不带压缩的zip文件&#xff0c;当你把.apk后缀改成.zip后&#xff0c;就能对此进行…...

ATTCK视角下的信息收集:主机发现

目录 1、利用协议主动探测主机存活 利用ICMP发现主机 利用ARP发现主机 利用NetBIOS协议发现主机 利用TCP/UDP发现主机 利用DNS协议发现主机 利用PRC协议发现主机程序 2、被动主机存活检测 利用Browser主机探测存活主机 利用ip段探测主机存活 利用net命令探测主机存活…...

Redis 主从、哨兵和分片集群简单介绍

Redis 主从集群架构 单节点 redis 并发能力有上限&#xff0c;要进一步提高 redis 并发能力&#xff0c;就要搭建主从集群&#xff0c;实现读写分离 主从同步原理 Replicaition id&#xff1a;每台 master 机器都一个 repl_id&#xff0c;是数据集的表示&#xff0c;若 salv…...

群晖NAS+DMS7.0以上版本+无docker机型安装zerotier

测试机型&#xff1a;群晖synology 218play / DSM版本为7.2.1 因218play无法安装docker&#xff0c;且NAS系统已升级为7.0以上版本&#xff0c;按zerotier官网说法无法安装zerotier, 不过还是可以通过ssh终端和命令方式安装zerotier。 1、在DSM新建文件夹 用于存放zerotier脚…...

Pinia持久化存储插件 pinia-plugin-persist

1、pinia-plugin-persist 作用 pinia-plugin-persist是一个Pinia持久化存储插件&#xff0c;用于将Pinia状态存储到本地持久化存储中&#xff0c;例如localStorage或sessionStorage。 2、安装和使用pinia-plugin-persist 有时候需要把pinia中的数据持久化存储&#xff08;存到…...

链家JAVA笔试题

单选题 1、在Java中下列关于自动类型转换说法正确的是&#xff08; &#xff09;。 A. 基本数据类型和String相加结果一定是字符串型 B. char类型和int类型相加结果一定是字符 C. double类型可以自动转换成int D. char int double “ ”结果一定是double 参考答案&am…...

当试图回复传入消息时,消息应用程序会闪烁

问题描述&#xff1a; Actual Results: Unable to reply for incoming message as Messaging app flickers and closes. Expected Results: User should be able to send reply for incoming messages. Reproduction Steps: Stay in home screen. Receive an incoming mes…...

Hubery-个人项目经历记录

研究生期间很有幸的进入到了崔老师的组&#xff0c;从此也就进入到了分析人体生理信号的领域&#xff0c;充满挑战的同时也充满了乐趣。借着CSDN整理一下近几年来参与的项目&#xff0c;这里蕴含着我各种美好的回忆&#xff0c;也作为一个展示自己的平台吧。博客中很多结果只给…...

Ubuntu18.04 安装 qt 5.15.2

一.安装qt 1.下载 在线安装包 使用国内镜像源在线安装QT(2023.3.25更新)_qt国内镜像-CSDN博客 2.安装 &#xff08;1&#xff09;QT库安装&#xff1a; 注意&#xff1a;我安装时 勾选 Qt Design studio 会导致报错&#xff0c;直接不勾选。 注意&#xff1a;Qtcreator 无…...

【Linux Shell】6. echo 命令

文章目录 【 1. 显示普通字符串 】【 2. 显示转义字符 】【 3. 显示变量 】【 4. 显示换行 】【 5. 显示不换行 】【 6. 显示命令执行结果 】 Shell 的 echo 指令用于字符串的输出。命令格式&#xff1a; echo string【 1. 显示普通字符串 】 #!/bin/bashecho "It is a …...

Dell 机架式服务器 - 高级定制服务

Dell 机架式服务器 - 高级定制服务 1. Dell Technologies2. 机架式服务器 - 高级定制服务2.1. Servers & Storage (服务器及存储) -> Servers2.2. Rack Servers (机架式服务器)2.3. Shop2.4. PowerEdge Rack Servers (PowerEdge 机架式服务器)2.5. PowerEdge R760 Rack …...

C++ 中关键字 Static

1、什么是static? static 是C中很常用的修饰符&#xff0c;它被用来控制变量的存储方式和可见性。由关键字static修饰类中成员&#xff0c;成为类的静态成员。类的静态成员为其所有对象共享&#xff0c;不管有多少对象&#xff0c;静态成员只有一份存于公用内存中。静态…...

系统学习Python——警告信息的控制模块warnings:警告过滤器-[重写默认的过滤器]

分类目录&#xff1a;《系统学习Python》总目录 Python应用程序的开发人员可能希望在默认情况下向用户隐藏所有Python级别的警告&#xff0c;而只在运行测试或其他调试时显示这些警告。用于向解释器传递过滤器配置的sys.warningoptions属性可以作为一个标记&#xff0c;表示是否…...

C++力扣题目-- 二叉树层序遍历

102.二叉树的层序遍历(opens new window)107.二叉树的层次遍历II(opens new window)199.二叉树的右视图(opens new window)637.二叉树的层平均值(opens new window)429.N叉树的层序遍历(opens new window)515.在每个树行中找最大值(opens new window)116.填充每个节点的下一个右…...

前端实现回车键触发搜索

前端实现回车键触发搜索 前言实现方法1. html里可以用 form 来实现2. 非form中的input 前言 搜索框是个常见的功能&#xff0c;除了用现有的ui组件库&#xff0c;有的时候必须要自己封装&#xff0c;所以涉及到点击按钮搜索和回车搜索都要实现 实现方法 1. html里可以用 for…...

k8s yaml文件pod的生命周期

Pod是k8s中最小限额资源管理组件&#xff0c;也是最小化运行容器化的应用的资源管理对象。 Pod是一个抽象的概念&#xff0c;可以理解为一个或者多个容器化应用的集合。 在一个pod当中运行一个容器是最常用的方式。 在一个pod当中同时运行多个容器&#xff0c;在一个pod当中…...

MPEG4Extractor

1、readMetaData 必须要找到 Moov box&#xff0c;找到 Mdat box或者 Moof box&#xff0c;并且创建了 ItemTable 大端 box 分为 box header 和 box content&#xff1a; box header由8个字节组成&#xff0c;前面四个字节表示这个box 的大小&#xff08;包含这个头的8字节&a…...

做网站需要身份证吗/搜索引擎是网站吗

一.Linux 安装配置 Java 开发环境 1. 概述 此处在Ubuntu18.04系统下以 jdk-8u211-linux-x64.tar.gz.zip 为例 2. 下载地址 http://www.oracle.com/technetwork/java/javase/downloads/index.html 3. 解压缩并移动到指定目录 3.1 创建目录 #直接切换为超级管理员身份 su#…...

设计需要了解的网站/下载百度安装

知识点总结 基本数据类型&#xff1a; 数字型&#xff08;整型&#xff0c;浮点型&#xff09; 字符串型 jhc 列表 [1,jhc,20] 字典 {name:jhc} 布尔型 所有的数值都自带布尔值,其中0、None、空&#xff0c;布尔值为False&#xff0c;其余都为True运算符 算…...

中国建筑装饰网注册用户名/优化神马网站关键词排名价格

文章目录1. 按2. 代码1. 按 判断两个文件是否相同需要用到filecmp模块&#xff1a; filecmp.cmp(f1, f2, shallowTrue) 比较名为f1和f2的文件&#xff0c;如果它们似乎相等则返回True&#xff0c;否则返回False 如果shallow为真&#xff0c;那么具有相同os.stat()签名的文件将…...

wordpress只索引分类/百度的营销推广

继承作为面向对象编程的一种基本特征&#xff0c;其使用频率非常高。而继承包含了虚拟继承和普通继承&#xff0c;在可见性上分为public、protected、private。可见性继承比较简单&#xff0c;而虚拟继承对学习c的难度较大。 首先&#xff0c;虚拟继承与普通继承的区别有&#…...

网站上的文章用秀米可以做吗/google商店

1. 官网下载安装包并解压 解压Basler相机的驱动压缩包pylon_6.1.1.19861_x86_64_setup.tar.gz&#xff0c;解压之后有一个INSTALL文件和一个压缩包pylon_6.1.1.19861_x86_64.tar.gz。 2. 解压安装包里面的压缩包到指定的路径下 在computer->opt里面建文件夹pylon6&#xff0…...

网站禁止访问/怎么关键词优化网站

环境准备&#xff1a; 云主机&#xff08;香港节点&#xff09;&#xff08;CentOS7.4&#xff09;系统&#xff1a;CentOS7网卡名:eth0客户端&#xff08;win7&#xff09;&#xff08;红米安卓手机&#xff09;#由于pptpd需要iptables的支持&#xff0c;而centos7以后不再内置…...