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

在排序数组中查找元素的第一个和最后一个位置--LeetCode

题目

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

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

示例 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]

思路一:

采用两次二分查找策略,第一次查找目标值首次出现的位置,第二次查找目标值最后一次出现的位置。

  1. 初始化
    • 设定左右边界leftright,分别指向数组的首尾。
    • firstlast初始化为 -1,用于存储目标值首次和最后一次出现的位置。
  2. 查找首次出现的位置
    • left小于等于right时,持续进行二分查找。
    • 算出中间位置middle
    • nums[middle]等于目标值,将first更新为middle,并把右边界right更新为middle - 1,继续向左查找,以找到首次出现的位置。
    • nums[middle]大于目标值,将右边界right更新为middle - 1
    • nums[middle]小于目标值,将左边界left更新为middle + 1
  3. 查找最后一次出现的位置
    • 重置左右边界leftright
    • left小于等于right时,继续二分查找。
    • 计算中间位置middle
    • nums[middle]等于目标值,将last更新为middle,并把左边界left更新为middle + 1,继续向右查找,以找到最后一次出现的位置。
    • nums[middle]大于目标值,将右边界right更新为middle - 1
    • nums[middle]小于目标值,将左边界left更新为middle + 1
  4. 返回结果:返回包含firstlast的数组。
class Solution {public int[] searchRange(int[] nums, int target) {int left = 0;// 初始化变量 left 为 0,它表示当前搜索范围的左边界。int right = nums.length - 1;// 初始化变量 right 为数组 nums 的最后一个元素的索引,它表示当前搜索范围的右边界。int first = -1;// 初始化变量 first 为 -1,用于存储目标值 target 第一次出现的索引。如果未找到 target,则保持为 -1。int last = -1;// 初始化变量 last 为 -1,用于存储目标值 target 最后一次出现的索引。如果未找到 target,则保持为 -1。while (left <= right) {// 开始第一个二分查找循环,目的是找到目标值 target 第一次出现的位置。// 只要左边界小于等于右边界,就继续循环。int m = (left + right) / 2;// 计算当前搜索范围的中间位置 m。if (nums[m] == target) {// 如果中间位置的元素等于目标值 target。first = m;// 更新 first 为当前中间位置 m,因为找到了一个目标值。right = m - 1;// 缩小搜索范围到左半部分,继续向左查找,以找到 target 第一次出现的位置。} else if (nums[m] > target) {// 如果中间位置的元素大于目标值 target。right = m - 1;// 缩小搜索范围到左半部分,因为目标值只可能在左半部分。} else {// 如果中间位置的元素小于目标值 target。left = m + 1;// 缩小搜索范围到右半部分,因为目标值只可能在右半部分。}}left = 0;// 重置左边界为 0,准备进行第二次二分查找。right = nums.length - 1;// 重置右边界为数组 nums 的最后一个元素的索引,准备进行第二次二分查找。while (left <= right) {// 开始第二个二分查找循环,目的是找到目标值 target 最后一次出现的位置。// 只要左边界小于等于右边界,就继续循环。int m = (left + right) / 2;// 计算当前搜索范围的中间位置 m。if (nums[m] == target) {// 如果中间位置的元素等于目标值 target。last = m;// 更新 last 为当前中间位置 m,因为找到了一个目标值。left = m + 1;// 缩小搜索范围到右半部分,继续向右查找,以找到 target 最后一次出现的位置。} else if (nums[m] > target) {// 如果中间位置的元素大于目标值 target。right = m - 1;// 缩小搜索范围到左半部分,因为目标值只可能在左半部分。} else {// 如果中间位置的元素小于目标值 target。left = m + 1;// 缩小搜索范围到右半部分,因为目标值只可能在右半部分。}}return new int[]{first, last};// 返回一个包含 first 和 last 的整数数组,即目标值 target 第一次和最后一次出现的索引。}
}

 思路二:

此代码通过二分查找在有序数组中找出目标值首次和最后一次出现的位置。整体分为主方法和两个辅助方法,主方法先做边界检查,再调用辅助方法分别查找首尾位置。

  1. 主方法 searchRange

    • 若数组长度为 0,直接返回 [-1, -1]
    • 调用 findFirstPosition 找目标值首次出现位置,若未找到(返回 -1),则直接返回 [-1, -1]
    • 调用 findLastPosition 找目标值最后一次出现位置。
    • 返回包含首次和最后出现位置的数组。
  2. 辅助方法 findFirstPosition

    • 初始化左右边界 left 和 right 分别指向数组首尾。
    • 当 left <= right 时进行二分查找:
      • 计算中间位置 m
      • 若 nums[m] < target,更新 left = m + 1
      • 若 nums[m] == target,更新 right = m,继续向左查找。
      • 若 nums[m] > target,更新 right = m - 1
    • 循环结束后,若 nums[left] == target,返回 left,否则返回 -1。
  3. 辅助方法 findLastPosition

    • 初始化左右边界 left 和 right 分别指向数组首尾。
    • 当 left <= right 时进行二分查找:
      • 计算中间位置 m,此处中间值向上取整。
      • 若 nums[m] < target,更新 left = m + 1
      • 若 nums[m] == target,更新 left = m,继续向右查找。
      • 若 nums[m] > target,更新 right = m - 1
    • 循环结束后,返回 left
class Solution {public int[] searchRange(int[] nums, int target) {int len = nums.length;if(len == 0){return new int[]{-1,-1};}int firstPosition = findFirstPosition(nums,target);if(firstPosition ==-1){return new int[]{-1,-1};}int lastPosition = findLastPosition(nums,target);return new int[]{firstPosition,lastPosition};}private int findFirstPosition(int[] nums,int target){int left = 0;int right = nums.length-1;while(left <= right){int m = (left +right) >>>1;if(nums[m] < target){//下一轮搜索区间是:[m+1,right]left = m+1;}else if(nums[m] == target){//下一轮搜索区间是:[left,m]right = m;}else{//下一轮搜索区间是:[left,m-1]right = m-1;}}if(nums[left] == target){return left;}return -1;}private int findLastPosition(int[] nums,int target){int left = 0;int right = nums.length-1;while(left <= right){//中间值要向上取整int m = (left +right+1) >>>1;if(nums[m] < target){//下一轮搜索区间是:[m+1,right]left = m+1;}else if(nums[m] == target){//下一轮搜索区间是:[m,right]left = m;}else{//下一轮搜索区间是:[left,m-1]right = m-1;}}return left;}
}

思路三:

利用二分查找在有序数组中找到目标值首次和最后一次出现的位置。通过定义一个带布尔参数的二分查找函数,根据参数不同分别查找第一个大于等于目标值的位置和第一个大于目标值的位置,进而确定目标值的出现范围。

  1. 主方法 searchRange

    • 调用 binarySearch 并传入 true,得到目标值首次出现的位置 leftIdx
    • 调用 binarySearch 并传入 false,得到目标值最后一次出现位置的下一个位置,减 1 后得到 rightIdx
    • 检查 leftIdx 和 rightIdx 是否合理(leftIdx 小于等于 rightIdxrightIdx 在数组范围内,且对应值为目标值),若合理则返回 [leftIdx, rightIdx],否则返回 [-1, -1]
  2. 辅助方法 binarySearch

    • 初始化左右边界 left 和 right 以及结果变量 ans 为数组长度。
    • 当 left 小于等于 right 时进行二分查找:
      • 计算中间位置 mid
      • 若 nums[mid] 大于目标值,或 lower 为 true 且 nums[mid] 大于等于目标值,更新右边界 right = mid - 1,并将 ans 更新为 mid
      • 否则,更新左边界 left = mid + 1
    • 循环结束后返回 ans
class Solution {public int[] searchRange(int[] nums, int target) {int leftIdx = binarySearch(nums, target, true);// 调用 binarySearch 方法来查找目标值首次出现的位置// 传入 true 表示要找首次出现的位置int rightIdx = binarySearch(nums, target, false) - 1;// 调用 binarySearch 方法来查找目标值最后一次出现位置的下一个位置// 传入 false 表示要找最后一次出现位置的下一个位置// 最后减去 1 得到最后一次出现的位置if (leftIdx <= rightIdx && rightIdx < nums.length && nums[leftIdx] == target && nums[rightIdx] == target) {// 检查得到的首次和最后一次出现的位置是否合理// 条件包括:首次位置小于等于最后位置,最后位置在数组范围内,且这两个位置对应的值都是目标值return new int[]{leftIdx, rightIdx};// 如果条件满足,返回包含首次和最后一次出现位置的数组} return new int[]{-1, -1};// 如果条件不满足,说明目标值不在数组中,返回 [-1, -1]}public int binarySearch(int[] nums, int target, boolean lower) {int left = 0, right = nums.length - 1, ans = nums.length;// 初始化 ans 为数组长度,它会记录最终结果while (left <= right) { int mid = (left + right) / 2;if (nums[mid] > target || (lower && nums[mid] >= target)) {// 如果中间位置的值大于目标值,或者 lower 为 true 且中间位置的值大于等于目标值right = mid - 1;// 缩小右边界到 mid - 1,继续在左半部分查找ans = mid;// 更新 ans 为 mid,因为可能找到了更合适的位置} else {left = mid + 1;// 否则,说明目标值在右半部分,将左边界更新为 mid + 1}}return ans;// 循环结束后,返回记录的结果 ans}
}

相关文章:

在排序数组中查找元素的第一个和最后一个位置--LeetCode

题目 给定一个按照升序排列的整数数组 nums&#xff0c;和一个目标值 target。找出给定目标值在数组中的开始位置和结束位置。 如果数组中不存在目标值 target&#xff0c;返回 [-1, -1]。 示例 1&#xff1a; 输入&#xff1a;nums [5,7,7,8,8,10], target 8输出&#x…...

MySQL快速入门篇---库的操作

目录 一、创建数据库 1.语法 2.示例 二、查看数据库 1.语法 三、字符集编码和校验&#xff08;排序&#xff09;规则 1.查看数据库支持的字符集编码 2.查看数据库支持的排序规则 3.查看系统默认字符集和排序规则 3.1.查看系统默认字符集 3.2.查看系统默认排序规则 ​…...

rancher 网红无法上传大视频,小于2m可以正常上传

rancher 部署的nginxphp7.4 架构 阿里云oss rancher ingress 本次问题只需要修改php配置即可 nginx 通过映射配置文件直接修改 php 通过添加新的映射文件配置修改 ingress 可以rancher控制台修改yaml 文件 oss 不需要做配置 rootworker3:/data/nfs# sudo cat php/upload.in…...

Linux 文件查找终极指南:find, locate, grep 等命令详解

在 Linux 系统管理和日常使用中,文件查找是一项不可或缺的基本技能。无论是寻找配置文件、查找日志文件中的特定错误,还是清理旧的临时文件,掌握高效的文件查找工具都能让你事半功倍。Linux 提供了多种强大的命令行工具来满足不同的查找需求。本文将详细介绍几个最常用、最强…...

python豆包语音合成并播放

豆包语音合成文档入口&#xff1a;账号登录-火山引擎 #codingutf-8 requires Python 3.6 or later pip install requestsimport base64 import json import requests from playsound import playsoundtts_file_name"doubaotts.mp3" def doubao_tts(text):语音合成ap…...

LoRA(Low - Rank Adaptation,低秩自适应 )微调技术改进创新点

LoRA(Low - Rank Adaptation,低秩自适应 )微调技术改进创新点 模型参数层面 低秩分解创新:LoRA核心是对权重矩阵低秩分解,将原始权重矩阵分解为固定的预训练权重部分和可训练的低秩变化量部分。传统全量微调需更新全部参数,而LoRA只更新低秩矩阵参数,大幅减少可训练参数…...

Shell脚本-变量是什么

在Shell脚本编程中&#xff0c;变量是一个非常基础且重要的概念。它们用于存储数据&#xff0c;并可以在整个脚本中引用这些数据来执行各种操作。理解如何定义、使用和管理变量是编写有效Shell脚本的关键。本文将详细介绍Shell脚本中的变量&#xff0c;包括其基本概念、类型以及…...

空调制冷量和功率有什么关系?

空调的制冷量和功率是衡量空调性能的两个核心参数,二者既有区别又紧密相关,以下是具体解析: 1. 基本定义 制冷量(Cooling Capacity)指空调在单位时间内从室内环境中移除的热量,单位为 瓦特(W) 或 千卡/小时(kcal/h)。它直接反映空调的制冷能力,数值越大,制冷效果越…...

天梯赛树学合集

天梯赛关于树的知识考的还是就比较多的 1.PTA | 程序设计类实验辅助教学平台 #include<bits/stdc.h> using namespace std; int n; int root,a[2000]; int f1,g1; void dfs1(int l,int r){if(f0) return;int bala[l];if(r-l1<2) return;for(int il1;i<r;i){if(a[…...

今日多肽之——订书肽

订书肽是一种具有特殊结构和性质的新型多肽&#xff0c;在科研领域有重要应用&#xff0c;以下是具体介绍&#xff1a; 定义 订书肽是基于多肽形成 α- 螺旋以穿过细胞膜进入细胞的需求发展起来的。2000 年&#xff0c;Verdine 等发展了一种用碳碳键作为支架来稳定多肽 α- 螺…...

SonarQube 集成教程

SonarQube 集成教程 SonarQube&#xff08;原名 Sonar&#xff09; [3] 是由 SonarSource 开发的一个开源平台&#xff0c;使用java开发&#xff0c;用于对代码质量进行持续检查&#xff0c;通过静态分析代码自动进行审查&#xff0c;以检测 29 种编程语言的错误和代码异味。S…...

最优树搜索策略

1. Hill Climbing (爬山算法) 1.1 算法思路 爬山算法是一种简单的局部搜索算法&#xff0c;旨在通过不断选择当前状态的“最优”邻居来寻找全局最优解。该算法的核心思想是通过不断朝着某个方向改进来寻找解&#xff0c;直到没有更好的邻居可选为止。 具体步骤&#xff1a; …...

java基础问题

1. 数组扩充 new ArrayList(20) 扩容问题 这样初始化&#xff0c;没有发生扩容。在使用时若容量不够用了才会发生扩容。 当容量超过20个时会发生1.5倍原容量的扩容 如&#xff1a;容量加到 < 30 个。会扩容到 30 个。 若容量加到 > 30个&#xff0c;如31个&#xff0…...

2025年人工智能指数报告(斯坦福)重点整理

在今天的AI简报中&#xff0c;我将分享斯坦福大学以人为本人工智能研究所&#xff08;HAI&#xff09;于2025年4月7日发布的《2025年AI指数报告》的精彩内容。这是该年度报告的第八版&#xff0c;它提供了全球AI格局的详细信息和分析&#xff0c;包括全球应用、出版物、专利、资…...

驱动移植【简略版】

一、RTC时钟 测试一下看看能不能用就行 二、LED指示灯驱动 1.在设备树找到LED的节点&#xff0c;改对应的引脚&#xff0c; 2.还需要注意引脚的复用引脚有没有被其它东西占用&#xff0c;可以通过NXP官方提供的cofingue tool软件去查看&#xff0c;注释掉就行 三、RJGT102加…...

Qt QTimer 详解与使用指南

Qt QTimer 详解 QTimer 是 Qt 中用于实现定时器功能的类&#xff0c;通过周期性地触发 timeout() 信号来执行任务。以下从核心用法、高级功能、注意事项及示例代码等方面进行详细解析。 1. 基本用法 步骤&#xff1a; 创建对象&#xff1a;实例化 QTimer&#xff0c;通常指定…...

PDK中technology file从tf格式转换为lef格式

在数字后端流程中需要导入technology file工艺文件&#xff0c;一般传统的PDK中都提供.tf形式&#xff0c;能够在Synopsys ICC中进行导入。但是由于Cadence Innovus不断地完善&#xff0c;更多的工程采用了其进行数字后端设计。不过Cadence Innovus导入的是.lef格式的工艺文件&…...

Spring Boot资源耗尽问题排查与优化

Spring Boot服务运行一段时间后新请求无法处理的问题。服务没有挂掉&#xff0c;也没有异常日志。思考可能是一些资源耗尽或阻塞的问题。 思考分析 首先&#xff0c;资源耗尽可能涉及线程池、数据库连接、内存、文件句柄或网络连接等。常见的如线程池配置不当&#xff0c;导致…...

图+文+语音一体化:多模态合成数据集构建的实战与方法论

目录 图文语音一体化&#xff1a;多模态合成数据集构建的实战与方法论 一、多模态合成数据的核心价值 二、系统架构概览 三、核心模块与实现建议 ✅ 1. 文→图&#xff1a;图像合成&#xff08;Text-to-Image&#xff09; ✅ 2. 图→文&#xff1a;自动描述&#xff08;I…...

java的lambda和stream流操作

Lambda 表达式 ≈ 匿名函数 &#xff08;Lambda接口&#xff09;函数式接口&#xff1a;传入Lambda表达作为函数式接口的参数 函数式接口 只能有一个抽象方法的接口 Lambda 表达式必须赋值给一个函数式接口&#xff0c;比如 Java 8 自带的&#xff1a; 接口名 作用 Functio…...

Excalidraw:一个免费开源的白板绘图工具

Excalidraw 是一款免费开源的白板绘图工具&#xff0c;主打手绘风格&#xff0c;界面简洁易用&#xff0c;支持实时协作。它常用于绘制技术架构图、流程图、线框图、思维导图等&#xff0c;尤其适合需要快速草图设计的场景。 Excalidraw 支持的主要功能如下&#xff1a; &…...

推荐一款Umi-OCR_文字识别工具

Umi-OCR_文字识别工具 https://github.com/hiroi-sora/Umi-OCR/releases/latest...

leetcode0146. LRU 缓存-medium

1 题目&#xff1a;LRU 缓存 官方标定难度&#xff1a;中 请你设计并实现一个满足 LRU (最近最少使用) 缓存 约束的数据结构。 实现 LRUCache 类&#xff1a; LRUCache(int capacity) 以 正整数 作为容量 capacity 初始化 LRU 缓存 int get(int key) 如果关键字 key 存在于缓…...

单线服务器有什么优点

单线服务器是一个普遍存在的术语&#xff0c;它是指一种服务器连接互联网时只使用一个物理线路的服务器。简单来说&#xff0c;就是使用一条网络线路的服务器&#xff0c;上传和下载的数据都通过一个通道实现。在当今数字化的时代&#xff0c;服务器的选择至关重要。今天&#…...

Manus AI:突破多语言手写识别技术壁垒之路

Manus AI与多语言手写识别 讨论Manus AI如何突破多语言手写识别的技术壁垒。 写一篇详细的博客有重点有链接超详细 Manus AI&#xff1a;突破多语言手写识别技术壁垒之路 在人工智能领域&#xff0c;多语言手写识别一直是极具挑战性的难题。不同语言的字符形态、书写规则大相…...

pip 的包下载之后存放在哪?

以下是关于 pip 下载的包存放位置的详细说明&#xff0c;适用于不同操作系统场景&#xff1a; 一、临时缓存位置 当使用 pip install 安装包时&#xff0c;下载的包会先暂存在 临时缓存目录&#xff0c;安装完成后自动删除。以下是各系统默认路径&#xff1a; 操作系统缓存路…...

文章记单词 | 第38篇(六级)

一&#xff0c;单词释义 distress [dɪˈstres] n. 悲痛&#xff1b;苦恼&#xff1b;忧虑&#xff1b;贫困&#xff1b;危难&#xff1b;不幸 v. 使悲痛&#xff1b;使苦恼&#xff1b;使忧虑odor [ˈəʊdə(r)] n. 气味&#xff1b;&#xff08;尤指&#xff09;难闻的气味…...

L2-006 树的遍历

L2-006 树的遍历 问题描述格式输入格式输出样例输入样例输出评测用例规模与约定解析参考程序难度等级 问题描述 给定一棵二叉树的后序遍历和中序遍历&#xff0c;请你输出其层序遍历的序列。这里假设键值都是互不相等的正整数。 格式输入 输入第一行给出一个正整数N&#xff0…...

在国产麒麟Kylin Linux Advanced Server V10中使用QT5开发环境并支持中文输入

切记&#xff1a;不要安装第三方源的工具包&#xff0c;包括QT官网的&#xff01;&#xff01;&#xff01; 在联网的情况下按以下步骤安装即可&#xff1a; sudo yum groupinstall "Development Tools" -y sudo yum install qt5-qtbase-devel qt5-qtdeclarative-d…...

C语言动规学习

文章目录 一、动态规划的基本概念1. 最优子结构2. 重叠子问题 二、动态规划的求解步骤三、动态规划与递归的比较四、例题&#xff08;只讲思维&#xff0c;空间时间复杂度大小不与题目比较&#xff09;1、斐波那契数列1. 定义状态2. 找出状态转移方程3. 初始化边界条件4. 确定计…...

Vue3中provide和inject的用法示例

在 Vue3 中&#xff0c;provide 和 inject 用于实现跨层级组件通信。以下是一个简单的示例&#xff1a; 1. 父组件 (祖先组件) - 提供数据 javascript 复制 // ParentComponent.vue import { provide, ref, reactive } from vue;export default {setup() {// 提供静态数据p…...

fastdds:传输层SHM和DATA-SHARING的区别

下图是fastdds官方的图&#xff0c;清晰地展示了dds支持的传输层: 根据通信双方的相对位置(跨机器、同机器跨进程、同进程)的不同选择合适的传输层&#xff0c;是通信中间件必须要考虑的事情。 跨机器&#xff1a;udp、tcp 跨机器通信&#xff0c;只能通过网络&#xff0c; f…...

MQ基础篇

1.初识MQ 1.同步调用 概念&#xff1a; 同步调用是一种程序执行方式&#xff0c;在调用一个函数或服务时&#xff0c;调用方会一直等待被调用方执行完成并返回结果&#xff0c;才会继续执行后续代码 &#xff0c;期间调用线程处于阻塞状态。 同步调用的优势&#xff1a; 时…...

网络编程2

day2 一、UDP编程 1.编程流程 2.函数接口 3.注意 (1)、对于TCP是先运行服务器&#xff0c;客户端才能运行。(2)、对于UDP来说&#xff0c;服务器和客户端运行顺序没有先后&#xff0c;因为是无连接&#xff0c;所以服务器和客户端谁先开始&#xff0c;没有关系.(3)、一个服务器…...

Python环境中在线训练机器学习模型所遇到的问题及解决方案

我最近开发个智能控制系统,包括实时数据采集、预测、策略优化等功能,最近增加在线学习功能,也就是在线进行模型训练,在线进行模型训练时出现了问题,现象为: 控制台报: cmdstanpy - INFO - Chain [1] start processing所有任务、线程停止,Web服务登录无法访问后台的pyt…...

「仓颉编程语言」Demo

仓颉编程语言」Demo python 1)# 仓颉语言写字楼管理系统示例&#xff08;虚构语法&#xff09;# 语法规则&#xff1a;中文关键词 类Python逻辑定义 写字楼管理系统属性:租户库 列表.新建()报修队列 列表.新建()费用单价 5 # 元/平方米方法 添加租户(名称, 楼层, 面积):…...

《软件设计师》复习笔记(11.4)——处理流程设计、系统设计、人机界面设计

目录 一、业务流程建模 二、流程设计工具 三、业务流程重组&#xff08;BPR&#xff09; 四、业务流程管理&#xff08;BPM&#xff09; 真题示例&#xff1a; 五、系统设计 1. 主要目的 2. 设计方法 3. 主要内容 4. 设计原则 真题示例&#xff1a; 六、人机界面设…...

win11系统截图的几种方式

在 Windows 11 中&#xff0c;系统内置的截图功能已全面升级&#xff0c;不仅支持多种截图模式&#xff0c;还整合了录屏、OCR 文字识别和 AI 增强编辑等功能。以下是从基础操作到高阶技巧的完整指南&#xff1a; 一、快捷键截图&#xff08;效率首选&#xff09; 1. Win Sh…...

http://noi.openjudge.cn/——2.5基本算法之搜索——1998:寻找Nemo

文章目录 题目宽搜代码优先队列深搜代码小结 题目 总时间限制: 2000ms 内存限制: 65536kB 描述 Nemo 是个顽皮的小孩. 一天他一个人跑到深海里去玩. 可是他迷路了. 于是他向父亲 Marlin 发送了求救信号.通过查找地图 Marlin 发现那片海像一个有着墙和门的迷宫.所有的墙都是平行…...

win10系统完美配置mamba-ssm全整合方案

好久没瞎写东西了&#xff0c;刚好最近遇到一个逆天需求&#xff1a;要在win10平台上配置可用的mamba-ssm环境。由于这个环境原版以及相关依赖都是仅适配linux的&#xff0c;即使是依赖conda环境直接拿来往windows系统上装也全是bug&#xff0c;网上大量的垃圾教程也都是错的&a…...

MQTTClient.c中的协议解析与报文处理机制

MQTTClient.c中的协议解析与报文处理机制 1. 协议解析的核心逻辑 &#xff08;1&#xff09;报文头部解析 MQTT协议报文由固定头&#xff08;Fixed Header&#xff09; 可变头&#xff08;Variable Header&#xff09; 负载&#xff08;Payload&#xff09;三部分组成。在rea…...

LeetCode每日一题4.18

2364.统计坏数对的数目 问题 问题分析 根据题目要求&#xff0c;(i, j) 是一个坏数对的条件是&#xff1a; i < j j - i ! nums[j] - nums[i]&#xff0c;即 nums[j] - j ! nums[i] - i 因此&#xff0c;我们可以转换问题&#xff1a;对于每个 j&#xff0c;找到所有 i &l…...

cmd查询占用端口并查杀

查看特定端口的占用情况 netstat -ano | findstr 端口号 netstat -ano | findstr 端口号 结束指定进程 askkill /T /F /PID PID askkill /T /F /PID PID...

ETL数据集成平台在交通运输行业的五大应用场景

在智能交通与数字物流时代&#xff0c;交通运输企业每天产生海量数据——车辆轨迹、货物状态、乘客流量、设备日志……但这些数据往往被困在分散的系统中&#xff1a;GPS定位数据躺在车载终端里&#xff0c;物流订单卡在Excel表中&#xff0c;地铁客流统计锁在本地服务器内。如…...

自定义 el-menu

使用的工具&#xff1a;vue2 element-ui <!DOCTYPE html> <html><head><link rel"stylesheet" href"https://unpkg.com/element-ui/lib/theme-chalk/index.css"><style>.el-menu--horizontal {border-bottom: none !impor…...

创维E900V20C-国科GK6323V100C-rtl8822cs-安卓9.0-短接强刷卡刷固件包

创维E900V20C&#xff0f;创维E900V20D-国科GK6323V100C-安卓9.0-强刷卡刷固件包 创维E900V20C 刷机说明&#xff1a; 1、用个老款4G&#xff0c;2.0的U盘&#xff0c;fat32&#xff0c;2048块单分区格式化&#xff0c; 5个文件复制到根目录&#xff0c;插盒子靠网口U口&…...

DemoGen:用于数据高效视觉运动策略学习的合成演示生成

25年2月来自清华、上海姚期智研究院和上海AI实验室的论文“DemoGen: Synthetic Demonstration Generation for Data-Efficient Visuomotor Policy Learning”。 视觉运动策略在机器人操控中展现出巨大潜力&#xff0c;但通常需要大量人工采集的数据才能有效执行。驱动高数据需…...

影楼精修-高低频磨皮算法解析

注意&#xff1a;本文样例图片为了避免侵权&#xff0c;均使用AIGC生成&#xff1b; 高低频磨皮基础 高低频磨皮是一种常用于人像后期修图的技术&#xff0c;它能在保留皮肤纹理的同时柔化瑕疵&#xff0c;使皮肤看起来更加自然细腻。高低频磨皮的算法原理如下&#xff1a; …...

打造搜索神功:Express 路由中的关键词探查之道

前言 在 Web 开发的江湖,Express 好比一位身怀绝技的武林高手,出手稳准狠,擅长解决各种疑难杂症。今天,我们将与这位高手并肩作战,一探关键词搜索路由的奥义。这不是枯燥的教学,而是一场充满玄机与笑点的江湖奇遇。挥起代码之剑,踏上探索之路,不仅能习得招式,还能在轻…...

kubernetes-使用ceph-csi

kubernetes-使用ceph-csi Kubernetes &#xff08;简称K8s&#xff09;和Ceph都是开源的云计算技术&#xff0c;K8s是一个容器编排平台&#xff0c;而Ceph是一个分布式存储系统。将K8s和Ceph集成在一起可以为应用程序提供高可用性和持久性存储。本文主要介绍如何在使用openEul…...