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

news2025/1/14 1:17:54

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

    • 题目
    • 算法设计:二分查找

 


题目

 


算法设计:二分查找

进行两次二分查找(定制版本),第一次先查找【第一个大于等于target的数】,第二次再查找【第一个大于target的数】。

这题懂二分查找的定制版本即可,关于二分查找的定制版本,请猛击《二分查找的循环不变量》。

  • 【第一个大于等于target的数】就是文中的【大于等于 key 的最小索引】
  • 【第一个大于target的数】就是文中的【查找大于 key 的最小值 upper】
int* searchRange(int* nums, int numsSize, int target, int* returnSize){
    *returnSize = 2;                           // 使用指针传参,得到ans的长度
    int* ans = (int*)malloc(2*sizeof(int));    // 给答案数组ans分配内存
    ans[0] = -1; ans[1] = -1;
    if (numsSize == 0)
        return ans; 
    int left, right, mid;
    left = 0, right = numsSize;         // 第一次搜索【开始位置】,左闭右开
    while(left < right){                // 搜索【第一个大于等于target的数】
        mid = left + ((right-left) >> 1);
        if (nums[mid] < target)
            left = mid+1;
        else
            right = mid;
    }

    if (left == numsSize || nums[left] != target)
        return ans;
    ans[0] = left;
    right = numsSize;                   // 第二次搜索【结束位置】,左闭右开
    while(left < right){                // 搜索【第一个大于target的数】
        mid = left + ((right-left) >> 1);
        if (nums[mid] <= target)
            left = mid+1;
        else
            right = mid;
    }
    ans[1] = left-1;
    return ans;
}

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

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

相关文章

Mac安装python3并配置环境变量

文章目录homebrew 安装 python3配置 python3 环境变量homebrew 安装 python3 可以用 homebrew 安装&#xff0c;也可以官网下载安装&#xff0c;我这里选择使用 homebrew 安装&#xff0c;没有装 homebrew 的小伙伴请自行百度 brew install python3我们执行下 python3 发现可…

Centos7安装高版本zshzim框架安装powerlevel10k

1. 安装高版本zsh 1.1 卸载低版本zsh sudo yum remove zsh -y1.2 下载源码 源码&#xff1a;https://zsh.sourceforge.io/Arc/source.html # 下载 wget https://jaist.dl.sourceforge.net/project/zsh/zsh/5.9/ # 解压 $ tar xvf zsh-5.9.tar.xz1.3 编译安装 yum install …

新应用——养老院管理应用,信息化的多功能管理应用

养老院管理系统专门为医养结合的养老机构量身打造的信息化管理系统&#xff0c;还适用于社区医院&#xff0c;包含诊断、病历、财务、物资、照护记录、处方等功能点。此应用分为经营管理、长者管理、物资库存、财会综合等四个大模块&#xff0c;全方面打造适用于养老院&#xf…

精准招聘!一图了解2023牛客校招专场

当「简历海投」成为当代大学生一种「硬核求职」的方式&#xff0c;如何精准地找到与招聘目标相匹配的专业人才成为HR校园招聘工作中的一大难点。为了帮助企业解决这些难题&#xff0c;牛客为企业推出了「牛客招聘专场」助力企业做好雇主品牌传播&#xff0c;提升收到的简历质量…

自动驾驶道路曲率计算

自动驾驶系列 车道曲率和中心点偏离距离计算 文章目录自动驾驶系列目标一、曲率的介绍圆的曲率曲线的曲率二、实现1.计算曲率半径的方法&#xff0c;代码实现如下&#xff1a;总结目标 知道车道曲率计算的方法 知道计算中心点偏离距离的计算 一、曲率的介绍 曲线的曲率就是针…

CSS入门五、定位

零、文章目录 文章地址 个人博客-CSDN地址&#xff1a;https://blog.csdn.net/liyou123456789个人博客-GiteePages&#xff1a;https://bluecusliyou.gitee.io/techlearn 代码仓库地址 Gitee&#xff1a;https://gitee.com/bluecusliyou/TechLearnGithub&#xff1a;https:…

Revit出图问题:打印机中新建纸张尺寸?批量导出图纸?

一、Revit中在打印机中新建纸张尺寸 Revit导出PDF图纸&#xff0c;如何在打印机中新建纸张的尺寸&#xff1f; 在导出PDF的时候&#xff0c;我们需要将图纸放在合适的纸张页面上&#xff0c;而这个时候系统又没有提供所需的页面尺寸&#xff0c;如图1所示。 这种情况下我们该如…

数据结构学习笔记——二叉排序树

目录一、二叉排序树的定义二、二叉排序树的插入和构造三、二叉排序树的查找四、二叉排序树的平均查找长度五、二叉排序树的删除六、二叉排序树和二分查找对比二叉排序树的查找过程与折半查找&#xff08;二分查找&#xff09;相似&#xff0c;即折半查找的判定树就是一棵二叉排…

【安卓学习笔记】界面编程入门

安卓应用采用View组件进行界面布局&#xff0c;可以通过两种方式进行布局&#xff0c;分别是XML文件和Java代码。 其中采用XML文件进行布局是较好的方式&#xff0c;因为这样可以将XML文件和Java代码分开编写&#xff0c;使得项目结构变得更加清晰。 简单的图片浏览器 下面是…

git仓库清理瘦身解决 .git文件夹过大的问题

git仓库清理找了很多资料和方案都没有很完美执行成功的&#xff1b;现在找到一个完美方案&#xff0c;分享给大家&#xff1b;希望能帮助大家 问题 1、gitlab代码开发了仓库开发了五年了&#xff0c;代码只有10M&#xff1b;clone的时候要700多兆很浪费时间 2、创建分支和切换…

Java泛型通配符的使用

目录 泛型在继承方面的体现 类A是类B的父类&#xff0c;G和G二者不具有子父类关系&#xff0c;二者是并列关系 类A是类B的父类&#xff0c;A是B的父类 通配符的使用 类A是类B的父类&#xff0c;G和G是没有关系的&#xff0c;二者共同父类是:G 使用通配符后&#xff0c;数…

Linux学习记录——칠 git、gdb部分基础知识以及进度条小程序

文章目录一、/r/n二、简单理解缓冲区概念三、进度条四、了解git五、初步学会使用gdb1、背景知识2、部分简单指令一、/r/n 在写小程序之前&#xff0c;我们先看一下/r和/n的区别。 /n我们遇到过&#xff0c;它叫做换行符。/r并不知道是什么符号。实际应用中&#xff0c;/n可以起…

鲍春健:从“走进客户”奔向“成为客户”

站在当下来看&#xff0c;小鹅通的服务力的特殊性在于其可以穿透三层&#xff0c;即以自身的服务力赋能客户的服务力。其中&#xff0c;一层是客户&#xff1b;一层是客户的服务&#xff1b;一层是客户的客户。 作者|斗斗 出品|产业家 累计终端用户数达8.2亿、最高日活14…

mysql系列之索引(待续)

目录一、索引简述1、什么叫索引2、索引的优缺点3、索引的使用场景二、索引的算法1、线性查找 Linear Search2、二分查找 Binary Search3、二叉查找树 Binary Search Tree4、平衡二叉树 AVL Tree5、B树6、B树三、B树和B树的理解1、B树和B树的区别2、数据库为什么使用B树而不是B树…

第二章.线性回归以及非线性回归—一元线性回归,代价函数,相关系数,决定系数

第二章.线性回归以及非线性回归 2.1 一元线性回归 1.概念&#xff1a; 1).自变量&#xff1a; 被用来进行预测的变量&#xff0c;相当于输入 2).因变量&#xff1a; 被预测的变量&#xff0c;相当于输出 3).回归分析&#xff1a; 用来建立方程模拟两个或者多个变量之间如何关…

从零开始学习Maven

maven Maven是apache公司开发的基于项目对象模型&#xff08;POM&#xff09; 可以通过一些描述信息来管理项目的构建、报告和文档的软件管理工具。 Maven 是用来管理项目&#xff0c;进行项目构建的一个软件。 java编写 项目构建流程&#xff1a; 1. 导入jar包 2. 配置文…

【MyBatis】RC隔离级别下,MyBatis 一级缓存、二级缓存造成的不一致情况

前言 数据库的MVCC 及 锁机制保证了数据的隔离、一致性。而建立在数据库之上的缓存&#xff0c;都会破坏掉数据库的一致性保障。本文探索在RC隔离级别下&#xff0c;MyBatis 一级缓存、二级缓存造成的坑。顺便复习一下 Spock 的用法&#xff0c;更加体验到了 Groovy 清爽的语法…

insert唯一索引加锁流程

MySQL版本&#xff1a;8.0.29 测试表&#xff1a; 测试数据&#xff1a; 开始测试&#xff1a; 事务1执行 加锁分析&#xff1a; mysql> SELECT * FROM performance_schema.data_locks\G *************************** 1. row ***************************ENGINE: INNO…

Express 中使用JWT进行登录验证

cookie 篇 : Node.js 中 cookie的验证登录 | session 篇 : Node.js 中 session验证登录 在前面讲过了两种验证登录的方式&#xff0c;其一是cookie&#xff0c;其二是session&#xff1b;那么在讲JWT之前先来简单的回顾这两种方式区别&#xff1b;cookie和sessi…

Java笔记023-包装类、String类、字符串的特性、String类、StringBuffer类、StringBuilder类

常用类包装类包装类的分类1、针对八种基本定义相应的引用类型-包装类2、有了类的特点&#xff0c;就可以调用类中的方法基本数据类型包装类booleanBooleancharCharacterbyteByteshortShortintIntegerlongLongfloatFloatdoubleDouble包装类和基本数据的转换演示包装类和基本数据…