【算法|二分查找No.1】leetcode 704. 二分查找+二分模板 leetcode 34. 在排序数组中查找元素的第一个和最后一个位置

news2024/11/25 16:41:17

个人主页:兜里有颗棉花糖
欢迎 点赞👍 收藏✨ 留言✉ 加关注💓本文由 兜里有颗棉花糖 原创
收录于专栏【手撕算法系列专栏】【LeetCode】
🍔本专栏旨在提高自己算法能力的同时,记录一下自己的学习过程,希望对大家有所帮助
🍓希望我们一起努力、成长,共同进步。

原题链接:点击直接跳转到该题目

目录

  • 一、leetcode 704. 二分查找解题代码
    • 二分查找模板总结
  • 二、leetcode 34. 在排序数组中查找元素的第一个和最后一个位置
    • 题目描述
    • 解题代码
    • 查找区间左右端点模板

一、leetcode 704. 二分查找解题代码

class Solution {
public:
    int search(vector<int>& nums, int target) {
        int n = nums.size();
        int l = 0,r = n - 1;
        while(l <= r)
        {
            int mid = l + (r - l) / 2;
            if(nums[mid] > target) r = mid - 1;
            else if(nums[mid] < target) l = mid + 1;
            else return mid;
        }
        return -1;
    }
};

二分查找模板总结

// 当长度为奇数时,mid = l + (r - l) / 2 和 mid = l + (r - l + 1) / 2无区别
// 当长度为偶数时,mid = l + (r - l) / 2 是中间数中左边那个,mid = l + (r - l + 1) / 2是中间数中右边那个
while(l <= r)
{
    int mid = l + (r - l) / 2;
    if(......) r = mid - 1;
    else if(......) l = mid + 1;
    else return ......;
}

二、leetcode 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]

在这里插入图片描述

解题代码

class Solution {
public:
    vector<int> searchRange(vector<int>& nums, int target) {
        int n = nums.size();
        if(n == 0) return {-1,-1};
        int l = 0,r = n - 1;
        // 查找区间左端点
        while(l < r)
        {
            int mid = l + (r - l) / 2;
            if(nums[mid] < target) l = mid + 1;
            else r = mid;
        }
        if(nums[l] != target) return {-1,-1};
        int begin = l;

        // 查找区间右端点
        r = n - 1;
        while(l < r)
        {
            int mid = l + (r - l + 1) / 2;
            if(nums[mid] > target) r = mid - 1;
            else l = mid;
        }
        int end = r;
        return {begin,end};
    }
};

查找区间左右端点模板

在这里插入图片描述

在这里插入图片描述

// 查找左端点模板
while(l < r)
{
    int mid = l + (r - l) / 2;
    if(nums[mid] < target) l = mid + 1;
    else r = mid;
}

// 查找右端点模板
while(l < r)
{
    int mid = l + (r - l + 1) / 2;
    if(nums[mid] > target) r = mid - 1;
    else l = mid;
}

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

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

相关文章

小白如何制作电子画册?看这里,超多画册模板任你挑!

传统纸质版的画册&#xff0c;制作起来即费力又费时&#xff0c;花费还高&#xff0c;想要修改内容还得重新制作&#xff0c;特别麻烦。现在互联网发达&#xff0c;如今已经用上了H5的技术&#xff0c;小白也能快速制作一本翻页电子画册。 只需用FLBOOK&#xff0c;在线就可以制…

线上Kafka集群如何调整消息存储时间

这里是weihubeats,觉得文章不错可以关注公众号小奏技术&#xff0c;文章首发。拒绝营销号&#xff0c;拒绝标题党 Kafka版本 kafka_2.13-3.5.0 背景 Kafka 默认消息存储时间为7天&#xff0c;实际线上的业务使用Kafka更多的是一些数据统计之类的业务&#xff0c;大多是朝生夕…

Screens for Mac 中文版 远程桌面连接控制工具

Screens Mac 版是Mac os平台上的一款Mac VNC 客户终端,能够自由访问远程计算机设备&#xff0c; Screens Mac 版支持各种强大的远程控制辅助工具&#xff0c;例如剪切板共享、快捷方式自定义、安全连接、多屏幕支持、快速扫描连接等。 Screens 4 for mac支持多种远程桌面协议&…

【Orangepi Zero2 全志H616】资料及环境搭建

点击跳转 点击跳转 点击跳转 点击跳转 点击跳转 点击跳转 跳转到此处 跳转到此处 跳转到此处 跳转到此处 跳转到此处 跳转到此处 官网资料下载 GitHub&#xff1a;新版本的 orangepi-build 源码 环境搭建&#xff1a;新手配置教程 打开 MobaXterm &#xff0c;单击左上的图标…

element-ui属性、事件、方法

在使用组件的方法时需要在对应的组件中加入 ref “组件别名” 在调用方法时直接使用 this.$refs.组件别名.方法名() 注意&#xff1a;在element-UI中所有组件 都存在 属性 事件 和方法 属性&#xff1a;直接写在对应的组件标签上&#xff0c;使用方法 :属性名 属性值 方式 事…

ABAP简单的队列设置QRFC

场景&#xff1a;用job的方式在接口里启用job&#xff0c;如果接口调用比较频繁&#xff0c;存在同一时间启动相同job的情况&#xff0c;会导致锁表锁程序这种情况。 查阅job函数&#xff0c;发现在JOB_CLOSE函数里自带了类似队列的参数&#xff0c;但是因为是接口&#xff0c…

如何控制 LLM 的输出格式和解析其输出结果?

现在很多人对于如何使用像 ChatGPT 这样的 LLM 已经比较有经验了&#xff0c;可以使用各种不同的 Prompt 得到自己想要的结果。但有时候我们的使用场景不局限于手动操作&#xff0c;而是需要结合程序去调用 API&#xff0c;并且解析 API 的返回结果&#xff0c;从而实现一些自动…

如何在 Unbuntu 下安装配置 Apache Zookeeper

简介 Zookeeper 是 apache 基金组织下的项目&#xff0c;项目用于简单的监控和管理一组服务&#xff0c;通过简单的接口就可以集中协调一组服务&#xff0c;如配置管理&#xff0c;信息同步&#xff0c;命名&#xff0c;分布式协调。 准备工作 Ubuntu 23.04 或者 20.04访问…

中国等28个国家发布《布莱切利宣言》,鼓励AI以安全方式发展

英国时间11月1日&#xff0c;中国、美国、英国、法国、德国等28个国家和欧盟&#xff0c;在英国的布莱切利庄园签署了&#xff0c;首个全球性人工智能&#xff08;AI&#xff09;声明——《布莱切利宣言》。 该宣言明确指出了AI对人类社会的巨大机遇&#xff0c;但AI需要以人为…

核心舱在轨飞行VR沉浸式互动体验满足大家宇宙探险的心愿

近日神州十七号载人飞船迎来发射&#xff0c;随着我国载人航天工程进入空间站应用与发展阶段&#xff0c;在轨航天探索和运维工作进入常态化阶段&#xff0c;然而每次出征都牵动着亿万人民的心&#xff0c;对航天航空的好奇和向往也越来越强烈。为了让普通人也能体验乘坐飞船上…

腾讯云轻量应用服务器2核4G5M三年566.6元还有吗?

腾讯云双11优惠活动3年轻量2核4G5M服务器从566.6元涨价到756元三年&#xff0c;3年轻量2核2G4M服务器从366.6元恢复到540元三年&#xff0c;大家抓紧吧&#xff0c;三年轻量已经库存已经不多了&#xff0c;看看隔壁阿里云&#xff0c;都是一年期的&#xff0c;活动&#xff1a;…

Compress JPEG PNG images-WordPress图片压缩插件使用方法

插件介绍 Compress JPEG & PNG images是一款非常好用的图片压缩插件:&#xff0c;非常值得大家安装使用&#xff1b;特别是图片类型网站。其实我们很多服务器磁盘空间是不在乎多那么几十MB大小的&#xff0c;但是压缩了图片能提升网站速度&#xff0c;节省宽带&#xff0c…

【Kubernetes部署】Kurbernetes集群高可用架构(二进制部署多Master节点)

高可用 一、基本架构1.1 为什么要有多个Master节点&#xff1f;1.1.1 Master节点单点故障问题1.1.2 选举算法的要求 1.2 基本架构 二、新Master节点的部署2.1 系统初始化操作Step1 关闭防火墙、selinux和swap分区Step2 修改主机名&#xff0c;添加域名映射Step3 修改内核参数St…

网络连接模拟器:SoftPerfect Connection Emulator Crack

SoftPerfect Connection Emulator&#xff08;SCE&#xff09;是一款面向网络应用程序开发人员、系统管理员和网络工程师的WAN环境模拟器。创建网络应用程序的软件开发人员&#xff0c;尤其是VoIP软件或实时协议等时间关键型应用程序&#xff0c;需要在一系列环境中彻底测试他们…

leetCode 213. 打家劫舍 II + 动态规划 + 从记忆化搜索到递推 + 空间优化

关于此题我的往期文章,动规五部曲详解篇&#xff1a; leetCode 213. 打家劫舍 II 动态规划 房间连成环怎么偷呢&#xff1f;_呵呵哒(&#xffe3;▽&#xffe3;)"的博客-CSDN博客https://heheda.blog.csdn.net/article/details/133409962213. 打家劫舍 II - 力扣&#x…

ShareGPT平替!利用苏格拉底提问模拟器更好地蒸馏ChatGPT对话能力

©PaperWeekly 原创 作者 | 孔楚伊 单位 | 深圳市大数据研究院 研究方向 | 自然语言处理 引言 基于真实用户与 ChatGPT 的互动&#xff0c;通过反转学习目标&#xff08;从学习回复到学习提问&#xff09;&#xff0c;训练更贴近真实用户的模拟器&#xff0c;更好的提问质…

电子产品上架Temu平台需要做什么认证?UL测试报告

2022年8月17日报道&#xff0c;TEMU正在筹备跨境电商平台。9月1日&#xff0c;TEMU跨境电商平台正式在海外上线&#xff0c;首站将面向北美市场&#xff0c;该平台命名为TEMU&#xff0c;App Store应用详情页显示意为“Team Up&#xff0c;Price Down”&#xff0c;即买得人越多…

3.线性神经网络-3GPT版

#pic_center R 1 R_1 R1​ R 2 R^2 R2 目录 知识框架No.1 线性回归基础优化算法一、线性回归1、买房案例2、买房模型简化3、线性模型4、神经网络5、损失函数6、训练数据7、参数学习8、显示解9、总结 二、 基础优化算法1、梯度下降2、学习率3、小批量随机梯度下降4、批量大小5、…

欧盟网络安全威胁:虚假与错误信息

如今&#xff0c;数字平台已是新闻媒体的主战地。社交网站、新闻媒体、甚至搜索引擎都是现在大多数人的信息来源。由于这些网站的运作方式是通过吸引人们来产生网站流量&#xff0c;这些抓人眼球的信息通常是推广广告&#xff0c;有些甚至没有经过审查。 国际现状 恶意攻击者现…

机器视觉行业最大的污点是什么?99%机器视觉公司存在测量项目数据造假,很遗憾,本人不没有恪守技术的本分

机器视觉行业最大的污点是什么&#xff1f;99%机器视觉公司存在测量项目数据造假&#xff0c;很遗憾&#xff0c;本人没有恪守技术的本分。 1%是没做过机器视觉测量项目&#xff0c;我们应该具体分析和具体判断&#xff0c;更应该提高自己的认知能力和技术能力。 那我们​在现场…