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

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

题目描述

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

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

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

考察二分查找法

解题代码:

class Solution {
public:
    vector<int> searchRange(vector<int>& nums, int target) {
        if(nums.size() == 0) return {-1, -1};
        int n = nums.size();
        int left = 0, right = n - 1;
        int first = -1;
        int last = -1;
        // 先找第一个等于target的位置
        while(left <= right)
        {
            int middle = (left + right) / 2;
            if(target < nums[middle])
            {
                right = middle -1 ;
            }
            else if(target > nums[middle])
            {
                left = middle + 1;
            }
            else
            {
                first = middle;
                right = middle - 1;
            }
        }

        left = 0;
        right = n - 1;
        while(left <= right)
        {
            int middle = (left + right) / 2;
            if(target < nums[middle])
            {
                right = middle -1 ;
            }
            else if(target > nums[middle])
            {
                left = middle + 1;
            }
            else
            {
                last = middle;
                left = middle + 1;
            }
        }
        return vector<int>{first, last};;
    }
};
http://www.dtcms.com/a/122661.html

相关文章:

  • 游戏引擎学习第211天
  • 毫米波测试套装速递!高效赋能5G/6G、新材料及智能超表面(RIS)研发
  • Stable Diffusion + CelebA-Dialog 数据集:不同数据集文本标签格式不一致?我的实验记录
  • python学智能算法(十)|机器学习逻辑回归(Logistic回归)
  • Django学习记录-2-数据库
  • mysql的下载和安装2025.4.8
  • 计算机网络——传输层(Udp)
  • Java 原型模式 详解
  • 如何在Linux系统上通过命令调用本地AI大模型?
  • qt之opengl使用
  • 【精品PPT】2025固态电池知识体系及最佳实践PPT合集(36份).zip
  • 移动端六大语言速记:第11部分 - 内存管理
  • ChatGPT 4:引领 AI 创作新时代
  • [ctfshow web入门] web29
  • 基于FreeRTOS和LVGL的多功能低功耗智能手表(硬件篇)
  • 微服务篇——SpringCloud
  • 【Ai/Agent】Windows11中安装CrewAI过程中的错误解决记录
  • Python如何用科技点亮触感世界——智能盲文翻译器开发全解析
  • SQL语句
  • 论文阅读笔记:Adaptive Multi-Modal Cross-Entropy Loss for Stereo Matching
  • 封装uniapp request promise化
  • 音视频生命探测仪,救援现场的“视听先锋”|鼎跃安全
  • 我们如何控制调度 C、C++ 中的线程执行?
  • HTTP 压力测试工具autocannon(AI)
  • 琴键上的强化学习:让机器人在真实世界里弹钢琴!
  • Spring如何实现资源文件的加载
  • 网络安全之-信息收集
  • 国内协作机器手焊接领域领军人物分析
  • MCP 实战系列(Day 2)- 动手搓个文件系统 MCP 服务器
  • Linux系统管理与编程12: FTP服务配置