【算法】LeetCode『二分查找』

【算法】LeetCode『二分查找』



🎬 个人主页MSTcheng · ZEEKLOG
🌱 代码仓库MSTcheng · Gitee
🔥 精选专栏: 《C语言
数据结构
《算法学习》
C++由浅入深

💬座右铭:路虽远行则将至,事虽难做则必成!


前言:前面的文章中我们向大家介绍了滑动窗口算法,本篇文章就来介绍一下二分查找算法。

一、二分查找算法介绍

二分查找是一种在有序数组中快速定位目标值的算法。通过每次将搜索范围减半,其时间复杂度为 O(log n),效率远高于线性查找。

算法步骤:
初始化左右指针 leftright,分别指向数组起始和末尾。

计算中间索引 mid = left + (right - left) (避免整数溢出)。比较 arr[mid] 与目标值:

arr[mid] == target,返回 mid
arr[mid] < target,调整 left = mid + 1,继续搜索右半部分。
arr[mid] > target,调整 right = mid - 1,继续搜索左半部分。
重复上述过程直至 left > right,若未找到则返回 -1

由于二分算法的思路比较简单,这里直接给出具体的步骤,本篇文章讲的是最基础的二分算法,进阶的二分算法将会在后面介绍!

了解完了二分算法,下面来看题目:

二、二分查找

2.1题目展示

在这里插入图片描述

2.1题目示例

示例 1:

输入: nums = [-1,0,3,5,9,12], target = 9 输出: 4 解释: 9 出现在 nums 中并且下标为 4 

示例 2:

输入: nums = [-1,0,3,5,9,12], target = 2 输出: -1 解释: 2 不存在 nums 中因此返回 -1 

2.3题目解析

本题的题意非常简单,这里就不过多赘述。

2.4算法原理

在这里插入图片描述

2.5代码编写

classSolution{public:intsearch(vector<int>& nums,int target){//定义两个指针int left=0,right=nums.size()-1;int mid=0;while(left<=right){if(left!=0&&right!=0) mid=(left+right)/2;if(nums[mid]<target){//小于往右边查找 left=mid+1;}elseif(nums[mid]>target){//大于往左边查找 right=mid-1;}else//(nums[mid]==target){return mid;}}return-1;}};

三、总结

二分查找的朴素模板:

while(left<= right){int mid =left +(right-left)/2;if(......) left =mid+1;elseif(......) right = mid-1;elsereturn......}

二分查找的适用条件:

数据必须为有序数组(升序或降序)。 仅适用于可通过索引随机访问的数据结构(如数组,不适用于链表)。 

Read more

最新电子电气架构(EEA)调研-3

而新一代的强实时性、高确定性,以及满足CAP定理的同步分布式协同技术(SDCT),可以实现替代TSN、DDS的应用,且此技术已经在无人车辆得到验证,同时其低成本学习曲线、无复杂二次开发工作,将开发人员的劳动强度、学习曲线极大降低,使开发人员更多的去完成算法、执行器功能完善。 五、各大车厂的EEA 我们调研策略是从公开信息中获得各大车厂的EEA信息,并在如下中进行展示。 我们集中了华为、特斯拉、大众、蔚来、小鹏、理想、东风(岚图)等有代表领先性的车辆电子电气架构厂商。        1、华为 图12 华为的CCA电子电气架构              (1)华为“计算+通信”CC架构的三个平台                         1)MDC智能驾驶平台;                         2)CDC智能座舱平台                         3)VDC整车控制平台。        联接指的是华为智能网联解决方案,解决车内、车外网络高速连接问题,云服务则是基于云计算提供的服务,如在线车主服务、娱乐和OTA等。 华

By Ne0inhk
Apache IoTDB 架构特性与 Prometheus+Grafana 监控体系部署实践

Apache IoTDB 架构特性与 Prometheus+Grafana 监控体系部署实践

Apache IoTDB 架构特性与 Prometheus+Grafana 监控体系部署实践 文章目录 * Apache IoTDB 架构特性与 Prometheus+Grafana 监控体系部署实践 * Apache IoTDB 核心特性与价值 * Apache IoTDB 监控面板完整部署方案 * 安装步骤 * 步骤一:IoTDB开启监控指标采集 * 步骤二:安装、配置Prometheus * 步骤三:安装grafana并配置数据源 * 步骤四:导入IoTDB Grafana看板 * TimechoDB(基于 Apache IoTDB)增强特性 * 总结与应用场景建议 Apache IoTDB 核心特性与价值 Apache IoTDB 专为物联网场景打造的高性能轻量级时序数据库,以 “设备 - 测点” 原生数据模型贴合物理设备与传感器关系,通过高压缩算法、百万级并发写入能力和毫秒级查询响应优化海量时序数据存储成本与处理效率,同时支持边缘轻量部署、

By Ne0inhk
SQL Server 2019安装教程(超详细图文)

SQL Server 2019安装教程(超详细图文)

SQL Server 介绍) SQL Server 是由 微软(Microsoft) 开发的一款 关系型数据库管理系统(RDBMS),支持结构化查询语言(SQL)进行数据存储、管理和分析。自1989年首次发布以来,SQL Server 已成为企业级数据管理的核心解决方案,广泛应用于金融、电商、ERP、CRM 等业务系统。它提供高可用性、安全性、事务处理(ACID)和商业智能(BI)支持,并支持 Windows 和 Linux 跨平台部署。 一、获取 SQL Server 2019 安装包 1. 官方下载方式 前往微软官网注册账号后,即可下载 SQL Server Developer 版本(

By Ne0inhk