【算法通关指南:算法基础篇】二分算法:1.在排序树组中查找元素的第一个和最后一个位置 2.牛可乐和魔法封印

【算法通关指南:算法基础篇】二分算法:1.在排序树组中查找元素的第一个和最后一个位置 2.牛可乐和魔法封印
在这里插入图片描述
🔥小龙报:个人主页
🎬作者简介:C++研发,嵌入式,机器人方向学习者
❄️个人专栏:《算法通关指南》
永远相信美好的事情即将发生
在这里插入图片描述

文章目录


前言

本专栏聚焦算法题实战,系统讲解算法模块:以《c++编程》,《数据结构和算法》《基础算法》《算法实战》 等几个板块以题带点,讲解思路与代码实现,帮助大家快速提升代码能力ps:本章节题目分两部分,比较基础笔者只附上代码供大家参考,其他的笔者会附上自己的思考和讲解,希望和大家一起努力见证自己的算法成长

一、二分算法

当我们的解具有二段性时,就可以使⽤二分算法找出答案:
• 根据待查找区间的中点位置,分析答案会出现在哪⼀侧;
• 接下来舍弃一半的待查找区间,转而在有答案的区间内继续使用二分算法查找结果。
时间复杂度为:O(logN)

STL中的二分查找lower_bound大于等于x的最小元素,返回的是迭代器;时间复杂度:O(log N) 。upper_bound大于x的最小元素,返回的是迭代器。时间复杂度:O(log N) 。

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

2.1题目

链接:在排序树组中查找元素的第一个和最后一个位置

在这里插入图片描述

2.2 算法原理

左右端点求法
(1)定义两个指针指向数组的头和尾
(2)二分区间
(3)判断获取的端点值是否合法

二分容易死循环的环节
(1)区间缩小头尾指针的相遇条件
(2)中值得求法

2.3代码

class Solution{ public: vector<int>searchRange(vector<int>& nums, int target){if(nums.size()==0)return{-1,-1};//二分查找左端点 int left =0,right = nums.size()-1;while(left < right){ int mid =(left + right)/2;if(nums[mid]>= target) right = mid;else left = mid +1;}if(nums[left]!= target)return{-1,-1}; int retleft = left;//二分查找右端点 left =0,right = nums.size()-1;while(left < right){ int mid =(left + right +1)/2;if(nums[mid]<= target) left = mid;else right = mid -1;}return{retleft,right};}};

三、牛可乐和魔法封印

3.1题目

链接:牛可乐和魔法封印

在这里插入图片描述

3.2 算法原理

二分查找算法模版题,依照第一题思路来写即可
注: 有可能并没有这个区间,需要在⼆分结束之后判断⼀下。

3.3代码

#include <iostream> using namespace std; const int N =1e5+10; typedef long long LL; LL a[N]; int n; int binary_search(int x,int y){ LL l =1,r = n;//查找左端点while(l < r){ LL mid =(l + r)/2;if(a[mid]>= x) r = mid;else l = mid +1;} LL retl = l;//判断端点是否合法if(a[l]< x)return0;//查找右端点 l =1,r = n;while(l < r){ LL mid =(l + r +1)/2;if(a[mid]<= y) l = mid;else r = mid -1;}if(a[r]> y)return0;return r - retl +1;} int main(){ cin >> n;for(int i =1;i <= n;i++) cin >> a[i]; int q; cin >> q;while(q--){ int x,y; cin >> x >> y; int ret =binary_search(x,y); cout << ret << endl;}return0;}

总结与每日励志

✨本次围绕二分算法展开,讲解其二段性核心逻辑及STL二分函数,结合两道实战题实操演练,重点掌握左右端点查找的二分模版、mid取整技巧及端点合法性判断,规避死循环误区。算法学习重在沉淀,每一道模版题的练习,都是突破瓶颈的底气。✨ 永远相信美好的事情即将发生,坚持刷题、深耕细节,不慌不忙,稳步前行,终会在算法之路上,遇见更好的自己!

在这里插入图片描述

Read more

AIGC时代——语义化AI驱动器:提示词的未来图景与技术深潜

AIGC时代——语义化AI驱动器:提示词的未来图景与技术深潜

文章目录 * 一、技术范式重构:从指令集到语义认知网络 * 1.1 多模态语义解析器的进化路径 * 1.2 提示词工程的认知分层 * 二、交互革命:从提示词到意图理解 * 2.1 自然语言交互的认知进化 * 2.2 专业领域的认知增强 * 三、未来技术图谱:2025-2030演进路线 * 3.1 2025年关键突破 * 3.2 2027年技术里程碑 * 3.3 2030年技术愿景 * 四、伦理与治理:构建可信语义化AI * 4.1 动态伦理约束框架 * 4.2 提示词审计系统 * 五、开发者能力升级路线图 * 5.1 核心技能矩阵 * 5.2 典型学习路径 * 结语 * 《驱动AI:

By Ne0inhk

PyRival中的图算法模块:Dijkstra与Floyd-Warshall实现原理与应用

PyRival中的图算法模块:Dijkstra与Floyd-Warshall实现原理与应用 【免费下载链接】PyRival⚡ Competitive Programming Library 项目地址: https://gitcode.com/gh_mirrors/py/PyRival PyRival是一个专注于算法竞赛的Python库,提供了丰富的数据结构和算法实现。其中图算法模块包含了多种经典路径查找算法,本文将深入解析Dijkstra和Floyd-Warshall两种最短路径算法的实现原理及其在实际场景中的应用。 📌 核心算法模块概览 PyRival的图算法实现集中在pyrival/graphs/目录下,包含了从基础到高级的多种图论工具。其中: * Dijkstra算法:适用于单源最短路径问题,处理非负权图 * Floyd-Warshall算法:解决全源最短路径问题,支持负权边但不允许负环 🔍 Dijkstra算法:单源最短路径的高效实现 算法原理与优势 Dijkstra算法采用贪心策略,通过优先队列逐步扩展最短路径。它的核心思想是: 1. 维护一个

By Ne0inhk
告别套壳 Chat!网易有道开源 LobsterAI:基于沙箱隔离与 Cowork 引擎的桌面级超级 Agent

告别套壳 Chat!网易有道开源 LobsterAI:基于沙箱隔离与 Cowork 引擎的桌面级超级 Agent

告别套壳 Chat!网易有道开源 LobsterAI:基于沙箱隔离与 Cowork 引擎的桌面级超级 Agent 当云端的大模型还在给你输出"建议代码"时,LobsterAI 已经通过你手机发来的钉钉消息,在本地沙箱里帮你跑完了数据分析,并把生成的 PPT 发到了你的工作群。 一、一场属于国产 Agent 的开源风暴 2026 年初,AI 圈的目光再次聚焦于 GitHub,网易有道开源的一个现象级项目——LobsterAI(有道龙虾),打破了长久以来"云端大模型"的路径依赖。 它不是一个简单的套壳聊天框,而是以一种极其硬核的姿态重写了"个人 AI 助理"定义的开源项目。 这不是普通的工具发布,这是对"脏活累活"的全面接管:

By Ne0inhk
工信部擘画“开源新基建”:推动工业互联网平台生态跃迁

工信部擘画“开源新基建”:推动工业互联网平台生态跃迁

当工业的庞大躯干寻求智能化的灵魂,一场围绕“连接”与“控制”的深层博弈正在展开。开源,这把曾经重塑了互联网世界的钥匙,如今被赋予了打开工业互联网下一道价值之门的使命。 1月13日,中华人民共和国工业和信息化部(以下简称“工信部”)发布了《推动工业互联网平台高质量发展行动方案(2026—2028年)》(以下简称《行动方案》)。面对工业互联网平台从“建设普及期”迈向“价值深耕期”的关键转折,数据孤岛林立、应用创新乏力、生态协同薄弱等瓶颈日益凸显的问题,在此背景下,《行动方案》将“探索平台开源机制,推动建设开源社区”提升至核心战略路径。这并非简单的技术选项,而是一次旨在通过开放、协作、共享的底层机制,对产业创新体系进行系统性重塑的顶层设计,其目标直指构建一个泛在互联、深度协同、开源开放的新一代工业互联网生态,为中国制造业的智能化跃迁铸就坚实基座。 一、破茧成蝶:开源成为顶层设计关键 工业互联网平台的深层挑战,就源于封闭与割裂,各平台如同数字时代的“孤岛”,数据协议不通、

By Ne0inhk