首页 > 其他分享 >34. 在排序数组中查找元素的第一个位置和最后一个位置

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

时间:2024-11-02 19:41:39浏览次数:1  
标签:target nums int 位置 mid 34 查找 result size

题目

参考了y总讲的这题 789. 数的范围 自己是这样写的;

class Solution {
public:
    vector<int> searchRange(vector<int>& nums, int target) {
        vector<int> result(2, -1);

        int l = 0, r = nums.size() - 1;
        while (l < r)
        {
            int mid = l + (r - l) / 2;
            if (nums[mid] < target) l = mid + 1;
            else r = mid;
        }

        if (nums.size() == 0 || nums[l] != target) return result;
        else result[0] = l;

        l = 0, r = nums.size() - 1;
        while (l < r)
        {
            int mid = l + (r - l) / 2 + 1;
            if (nums[mid] > target) r = mid - 1;
            else l = mid;
        }
        
        result[1] = l;

        return result;
    }
};

分析过程见下图:

img

然后说明一个要注意的点,也是本人写第一次代码然后提交报错的地方:

注意这条语句:

if (nums.size() == 0 || nums[l] != target) return result;

不要写成

if (nums[l] != target) return result;

因为如果nums是空的,那么就会发生越界的错误,一定要先判断能不能执行nums[l](如果nums没有元素是空的就不能执行)

卡哥的讲解也蛮有助于理解这题的:34. 在排序数组中查找元素的第一个和最后一个位置

标签:target,nums,int,位置,mid,34,查找,result,size
From: https://www.cnblogs.com/hisun9/p/18522377

相关文章

  • 如何使用Ida Pro和Core Dump文件定位崩溃位置(Linux下无调试符号的进程专享)
    我们在嵌入式Linux开发过程中经常会遇到一个问题,就是程序崩溃后不知道具体位置。因为我们发布到生产环境的一般是没有调试符号的(使用strip或编译时加-s参数,CMake生成的编译指令中的-O3也会造成调试符号丢失),毕竟嵌入式的存储都比较有限,肯定是需要剥离调试符号的。另外一个......
  • H7-TOOL的LUA小程序教程第17期:扩展驱动AD7606, ADS1256,MCP3421, 8路继电器和5路DS18B2
    LUA脚本的好处是用户可以根据自己注册的一批API(当前TOOL已经提供了几百个函数供大家使用),实现各种小程序,不再限制Flash里面已经下载的程序,就跟手机安装APP差不多,所以在H7-TOOL里面被广泛使用,支持在线调试运行,支持离线运行。TOOL的LUA教程争取做到大家可以无痛调用各种功能函数,不需......
  • c语言:一维数组+二维数组+二分查找法
     1:数组的概念     概念:数组是一组相同元素的集合。     特点:1、数组中存放的是一个或者多个数据,但是数组的元素个数不可以为0.3          2、数组里存放的数据是同类型的数据     分类:数组分为一维数组和多维数组,其中多......
  • ——二分查找——
    注意:代码中的left、right、mid都是下标,只有val代表的是值,区别好,才能更好理解代码。一、代码实现deffun(li,val):left=0#下标第一个right=len(li)-1#下标最后一个whileleft<=right:#查找范围,左......
  • linux开发必备知识(一)CH340相关以及驱动
    CH340是什么CH340是一种USB转串口的芯片,主要用于将USB接口转换为串口(UART),方便与各种串口设备进行通信。它广泛应用于Arduino、单片机开发板及其他需要串口通信的设备中。​​了解上面的知识后我们就知道了CH340是一款常用的USB转串口转换芯片,通常用于将USB接口连......
  • 嵌入式Linux驱动开发环境搭建-CH340 串口驱动安装
    CH340串口驱动安装驱动安装安装之前一定要连接板子检查驱动是否安上驱动安装我们一般在Windwos下通过串口来调试程序,或者使用串口作为终端,STM32MP157开发板使用CH340这个芯片实现了USB转串口功能。CH340是一款常用的USB转串口转换芯片,通常用于将USB接口连......
  • vs code常见的查找快捷键大全
    本文原文来自:vscode常见的查找快捷键大全-frozencola技术日志VSCode提供了多种方法来查找和导航文件,包括快速打开文件、文件资源管理器、全局搜索、查找符号、查找文件中的文本、查找并替换、文件导航和使用命令面板。通过熟练使用这些方法,你可以提高开发效率,更快地找到和打......
  • 二分法:高效查找的数学利器
    二分法:高效查找的数学利器二分法,又称为二分查找,是一种在已排序数组中查找特定元素的高效算法。其基本思想是通过每次将查找范围减半来迅速定位目标值。以下将详细介绍二分法的原理、实现步骤及其应用场景。一、基本原理二分法的工作原理如下:初始设置:设定两个指针,left指......
  • springboot在线吉他配套服务系统-计算机毕业设计源码53451
    目录摘要1绪论1.1选题背景与意义1.2国内外研究现状1.3论文结构与章节安排2系统分析2.1可行性分析2.2系统流程分析2.2.1数据流程2.2.2业务流程2.3系统功能分析2.3.1功能性分析2.3.2非功能性分析2.4系统用例分析2.5本章小结3系统总体......
  • ARCore与UnrealEngine集成开发教程_2024-07-25_21-40-34.Tex
    ARCore与UnrealEngine集成开发教程ARCore简介ARCore功能概述ARCore是Google开发的增强现实(AR)平台,旨在为移动设备提供高精度的AR体验。它通过以下核心功能实现这一点:运动追踪:ARCore能够追踪设备的运动,即使在没有GPS信号的室内环境中,也能提供稳定的AR体验。它使用设备......