【算法通关指南:算法基础篇】二分算法: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

Flutter 三方库 wasm_ffi 深入鸿蒙端侧硬核 WebAssembly 虚拟机沙盒穿透适配全景:通过异步极速 FFI 中继管道打通底层高算力异构服务-适配鸿蒙 HarmonyOS ohos

Flutter 三方库 wasm_ffi 深入鸿蒙端侧硬核 WebAssembly 虚拟机沙盒穿透适配全景:通过异步极速 FFI 中继管道打通底层高算力异构服务-适配鸿蒙 HarmonyOS ohos

欢迎加入开源鸿蒙跨平台社区:https://openharmonycrossplatform.ZEEKLOG.net Flutter 三方库 wasm_ffi 深入鸿蒙端侧硬核 WebAssembly 虚拟机沙盒穿透适配全景:通过异步极速 FFI 中继管道打通底层高算力异构服务并全面实现无损语言壁垒交互 前言 在 OpenHarmony 应用向高性能计算领域扩展的过程中,如何优雅地接入已有的 C/C++ 算法库(如加密引擎、重型图像处理、数学模拟)而又不失跨平台的便捷性?传统的 NAPI 虽然稳健,但在 Flutter 生态中,直接利用 WebAssembly (WASM) 配合 FFI(External Function Interface)的语义可以在一定程度上实现代码的高度复用。wasm_ffi 库为 Flutter 开发者提供了一套在 Dart 环境下调用 WASM

By Ne0inhk
三种适用于Web版IM(即时通讯)聊天信息的加密算法实现方案

三种适用于Web版IM(即时通讯)聊天信息的加密算法实现方案

文章目录 * **第一部分:引言与核心密码学概念** * **1.1 为什么IM需要端到端加密(E2EE)?** * **1.2 核心密码学概念与工具** * **第二部分:方案一:静态非对称加密(基础方案)** * **2.1 方案概述与流程** * **2.2 前端Vue实现(使用node-forge)** * **1. 安装依赖** * **2. 核心工具类 `crypto.js`** * **3. Vue组件中使用** * **2.3 后端Java实现(Spring Boot)** * **1. 实体类** * **2. Controller层** * **3. WebSocket配置** * **2.4 密钥管理、注册与登录集成** * **1. 用户注册/登录时生成密钥** * **2. 密钥设置页面** * **2.

By Ne0inhk
前端代码生成的大洗牌:当 GLM 4.7 与 MiniMax 挑战 Claude Opus,谁才是性价比之王?

前端代码生成的大洗牌:当 GLM 4.7 与 MiniMax 挑战 Claude Opus,谁才是性价比之王?

在 AI 辅助编程领域,长期以来似乎存在一条不成文的铁律:如果你想要最好的结果,就必须为最昂贵的模型买单(通常是 Anthropic 或 OpenAI 的旗舰模型)。然而,随着国产大模型如 GLM 4.7 和 MiniMax M2.1 的迭代,这一格局正在发生剧烈震荡。 最近,一场针对Claude Opus 4.5、Gemini 3 Pro、GLM 4.7 和 MiniMax M2.1 的前端 UI生成横向测评,打破了许多人的固有认知。在这场包含落地页、仪表盘、移动端应用等五个真实场景的较量中,不仅出现了令人咋舌的“滑铁卢”,更诞生了性价比极高的“新王”。 本文将深入拆解这场测试的细节,透过代码生成的表象,探讨大模型在工程化落地中的真实效能与成本逻辑。

By Ne0inhk
【Java Web学习 | 第14篇】JavaScript(8) -正则表达式

【Java Web学习 | 第14篇】JavaScript(8) -正则表达式

🌈个人主页: Hygge_Code🔥热门专栏:从0开始学习Java | Linux学习| 计算机网络💫个人格言: “既然选择了远方,便不顾风雨兼程” 文章目录 * JavaScript 正则表达式详解 * 什么是正则表达式🤔 * JavaScript 正则表达式的定义与使用🥝 * 1. 字面量语法 * 2. 常用匹配方法 * test() 方法🍋‍🟩 * exec() 方法🍋‍🟩 * 正则表达式的核心组成部分🐦‍🔥 * 1. 元字符 * 边界符 * 量词 * 字符类 * 2. 修饰符 * 简单示例🍂 JavaScript 正则表达式详解 正则表达式是处理字符串的强大工具,在 JavaScript 中被广泛应用于表单验证、文本处理和数据提取等场景。本文将从正则表达式的基本概念出发,详细介绍其语法规则和实际应用方法。 什么是正则表达式🤔 正则表达式是用于匹配字符串中字符组合的模式,在 JavaScript

By Ne0inhk