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

【C语言】字符串左旋的三种解题方法详细分析


在这里插入图片描述

博客主页: [小ᶻ☡꙳ᵃⁱᵍᶜ꙳]
本文专栏: C语言

文章目录

  • 💯前言
  • 💯题目描述
  • 💯方法一:逐字符移动法
  • 💯方法二:使用辅助空间法
  • 💯方法三:三次反转法
  • 💯方法对比与总结
    • 拓展思考
  • 💯总结

在这里插入图片描述


在这里插入图片描述


💯前言

  • 在这篇文章中,我们将深入探讨字符串左旋的三种解决方案,系统分析每种方法的算法设计时间复杂度空间复杂度,以及其适用场景局限性。这些方法从简单到高效,分别展示了逐字符移动法使用辅助空间法三次反转法的不同特点及其理论基础
    通过对这些方法的详细对比讨论,读者将对字符串操作基本原理有更为深入的理解,掌握在不同应用场景下如何选择最优的解决方案,以提升代码的效率鲁棒性
    C语言
    在这里插入图片描述

💯题目描述

实现一个函数,能够左旋字符串中的 k 个字符。

例如:

  • 给定字符串 ABCD,如果左旋 1 个字符,得到 BCDA
  • 如果左旋 2 个字符,得到 CDAB

左旋是指将字符串的前面部分字符移到字符串的末尾。我们将使用三种不同的实现方式来解决这一问题:逐字符移动法、使用辅助空间法、以及三次反转法。


💯方法一:逐字符移动法

思路

逐字符移动法是一种直观的实现方式,通过多次迭代将字符串的第一个字符移动到末尾,直到完成所需的旋转次数。该方法依赖于不断移动字符的位置以达到最终目标。其本质是一种线性搬移操作,容易理解,但在大数据量的情况下效率较低。
在这里插入图片描述

代码实现

void leftRound(char* str, int k) {int len = strlen(str);int time = k % len;for (int i = 0; i < time; i++) {char tmp = str[0];int j = 0;for (; j < len - 1; j++) {str[j] = str[j + 1];}str[j] = tmp;}
}int main() {char str[] = "abcdef";leftRound(str, 7);printf("%s\n", str);return 0;
}

解释

  • 获取字符串长度 len
  • 计算实际旋转次数 time = k % len,这样可以避免 k 超过字符串长度导致的冗余操作。
  • 外层循环用于执行 time 次旋转,每次只移动一个字符。
  • 使用内部的 for 循环,将每个字符依次前移一个位置,最后将原来的第一个字符移到末尾。

时间复杂度和空间复杂度

  • 时间复杂度:O(k * len),对于每次旋转都需要遍历整个字符串,因而效率较低。
  • 空间复杂度:O(1),只需一个额外的字符变量来暂存被移动的字符。

优缺点

  • 这种方法的优点是实现简单且易于理解,适合初学者用于理解字符串旋转的基本概念。但其缺点在于效率较低,尤其在 k 较大和字符串长度较长时,由于需要多次逐字符移动,时间开销会显著增加。

💯方法二:使用辅助空间法

思路

使用辅助空间法通过将旋转后的字符串临时保存,再将结果复制回原字符串。借助辅助空间将两个部分拼接,可以有效避免逐字符移动带来的低效问题。该方法的核心在于利用辅助数组,快速完成字符串的局部重组与合并
在这里插入图片描述

代码实现

void leftRound(char* str, int k) {int len = strlen(str);int time = k % len;char tmp[256] = { 0 };strcpy(tmp, str + time); strncat(tmp, str, time); strcpy(str, tmp);
}int main() {char str[] = "abcdef";leftRound(str, 7);printf("%s\n", str);return 0;
}

解释

  • 通过 strlen 获取字符串的长度。
  • 计算实际的旋转次数 time = k % len,以应对 k 过大时的情况。
  • 使用临时数组 tmp 存储旋转后的结果。
  • 利用 strcpy 函数将原字符串从 time 索引位置开始的部分复制到 tmp 中。
    • strcpy(tmp, str + time)str + time 表示指向原字符串从第 time 个位置开始的指针,strcpy 函数将从这个位置开始的所有字符(直到字符串结束符 )复制到 tmp 中。因此,tmp 中最初会存储字符串的后半部分。例如,若 str = "ABCD"time = 2strcpy(tmp, str + time)"CD" 复制到 tmp,结果为 tmp = "CD"
  • 使用 strncat 函数将原字符串的前 time 个字符拼接到 tmp 的末尾。
    • strncat(tmp, str, time)strncat 用于将源字符串的指定数量字符拼接到目标字符串的末尾。在这里,str 表示原字符串,time 表示从 str 开头开始的 time 个字符。因此,strncat(tmp, str, time) 将原字符串的前 time 个字符(即 "AB")拼接到 tmp 的末尾,形成最终结果。例如,当 tmp = "CD"time = 2 时,拼接后结果为 tmp = "CDAB"
  • 最后使用 strcpytmp 的内容复制回原字符串 str,完成旋转操作。

时间复杂度和空间复杂度

  • 时间复杂度:O(n),只需遍历字符串几次即可完成旋转。
  • 空间复杂度:O(n),需要额外的存储空间来保存旋转后的结果。

优缺点

  • 辅助空间法的优势在于其高效的操作,尤其适合处理较大的字符串,但需要额外的空间来存储结果。因此,对于内存资源受限的情况,该方法可能不太适合。

💯方法三:三次反转法

思路

三次反转法通过对字符串的部分片段进行反转,从而达到整体左旋的效果。核心思想是将字符串划分为两部分,分别反转,再对整体反转,以实现最终的左旋

这种方法以极少的操作步骤完成字符位置的重新排列,具有较高的效率数学美感

在这里插入图片描述

代码实现

void ReverseRange(char* str, int start, int end) {int left = start;int right = end;while (left < right) {char tmp = str[left];str[left] = str[right];str[right] = tmp;left++;right--;}
}void leftRound(char* str, int k) {int len = strlen(str);int time = k % len;ReverseRange(str, 0, time - 1);    // 反转前 time 个字符ReverseRange(str, time, len - 1);  // 反转剩余部分ReverseRange(str, 0, len - 1);     // 反转整个字符串
}int main() {char str[] = "abcdef";leftRound(str, 7);printf("%s\n", str);return 0;
}

解释

  1. 反转前 time 个字符

    • 调用 ReverseRange(str, 0, time - 1),反转字符串的前 time 个字符。
    • 例如,对 "ABCD" 反转前两个字符,得到 "BACD"
  2. 反转剩余部分

    • 调用 ReverseRange(str, time, len - 1),反转剩余部分。
    • "BACD" 中的后两个字符反转,得到 "BADC"
  3. 反转整个字符串

    • 调用 ReverseRange(str, 0, len - 1),反转整个字符串。
    • "BADC" 反转得到 "CDAB",从而完成左旋操作。

时间复杂度和空间复杂度

  • 时间复杂度:O(n),三次反转操作均为线性时间复杂度,因此总时间复杂度为 O(n)
  • 空间复杂度:O(1),只需进行交换操作,没有额外的空间开销。

优缺点

  • 三次反转法的优势在于其高效性,时间复杂度为 O(n),空间复杂度为 O(1),适合处理大规模字符串。该方法通过反转实现字符串的重新排列,以最小的时间和空间成本实现左旋,非常适合实际开发中的高效实现。

💯方法对比与总结

方法时间复杂度空间复杂度优点缺点
逐字符移动法O(k * n)O(1)实现简单,直观效率较低
辅助空间法O(n)O(n)实现高效,代码简洁需要额外空间
三次反转法O(n)O(1)高效且无额外空间开销实现稍复杂,需要三次反转
  • 逐字符移动法 适合初学者理解字符串旋转的概念,但效率不高。在字符较多或者旋转次数较大时,可能会因为需要逐次移动而显得低效
  • 辅助空间法 则通过一次性拼接字符串提升了效率,但需要额外的空间存储,对于空间资源紧张的场景可能不适合
  • 三次反转法最优的方法,尤其适合大规模字符串。它的空间复杂度最低效率高,是一个非常经典的字符串操作技巧。该方法不仅巧妙而且具有一定的数学美感,通过三次反转将字符串重新排列到目标位置。

拓展思考

  • 这些字符串旋转的实现方法可以拓展到其他类型的数据结构,例如数组的左旋、右旋操作。对于数组来说,三次反转法同样有效,可以通过类似的思路对数组元素进行重新排列。
  • 三次反转法的思想不仅可以用于字符串旋转,还可以用于链表数组等其他序列的数据结构。它是一种通用的思想,可以帮助解决许多涉及顺序调整的问题。
  • 对于多种编程语言,我们也可以找到相似的实现方法。Python 中可以使用字符串切片操作来轻松实现左旋,而 Java 中可以借助 StringBuilder 进行高效的字符串操作。Python 的切片方法非常直观,例如可以使用 s = s[k:] + s[:k] 来实现左旋操作,简洁而高效。
  • 对于面试场景,理解这些方法的时间复杂度空间复杂度,以及不同方法在实际应用中的适用性非常重要。面试官通常希望看到你对基础方法的掌握以及对最优解法的深入理解。

💯总结

  • 在这里插入图片描述
    字符串左旋是一个非常基础但又非常经典的字符串操作问题。通过这篇文章的深入解读,我们详细探讨了三种不同的解决方案,并对每种方法的算法复杂度适用场景优缺点进行了深入分析。掌握这些方法有助于我们在面试中应对字符串操作类的问题,也能帮助我们在实际开发中写出更优雅、高效的代码。这三种方法展示了从基础到高效的不同解决思路,是学习和掌握字符串操作的宝贵经验
    希望这篇文章能够激发你对字符串操作的更深入思考与理解。未来的学习和工作中,愿你能够灵活应用这些技巧,优化代码的效率与可读性,深入理解不同方法背后的原理,并能够在解决问题时选择最合适的工具。这正是编程的艺术,也是不断提升的动力所在

在这里插入图片描述


相关文章:

【C语言】字符串左旋的三种解题方法详细分析

博客主页&#xff1a; [小ᶻ☡꙳ᵃⁱᵍᶜ꙳] 本文专栏: C语言 文章目录 &#x1f4af;前言&#x1f4af;题目描述&#x1f4af;方法一&#xff1a;逐字符移动法&#x1f4af;方法二&#xff1a;使用辅助空间法&#x1f4af;方法三&#xff1a;三次反转法&#x1f4af;方法对…...

Android导出Excel

poi org.apache.poi:poi-ooxml:4.x&#xff1a; 不支持Android使用&#xff0c; 不支持原因&#xff1a;Android底层库不支持xml所需的bean类&#xff0c;使用即报错only supported starting with Android O (–min-api 26) org.apache.poi:poi-ooxml:5.2.0&#xff1a; 支持A…...

【学术讲座】视觉计算中的深度学习方法 AIGC图像视频生成模型的推理加速

视觉计算中的深度学习方法 发展历程 backbone 强化学习、LLM等&#xff1a;有监督 && 无监督的结合 目标检测 图像分割 网络结构搜索 搜索方法 1&#xff1a;强化学习 2&#xff1a;强化学习 3&#xff1a;梯度算法 结构选择的作用 1&#xff1a;开放环境感知网络…...

华为OD机试真题---智能驾驶

华为OD机试中的“智能驾驶”题目是一道涉及广度优先搜索&#xff08;BFS&#xff09;算法运用的题目。以下是对该题目的详细解析&#xff1a; 一、题目描述 有一辆汽车需要从m * n的地图的左上角&#xff08;起点&#xff09;开往地图的右下角&#xff08;终点&#xff09;&a…...

视频质量评价SimpleVQA

目录 一、研究意义例子 二、介绍三、文章解读3.1 论文动机3.2论文思路3.3方法3.3.1网络框架3.3.2公式解读3.3.3核心创新3.3.4理解 &#xff01;&#xff01;&#xff01;作者对模型的改进本人算法框体视频抽帧美学特征提取网络&#xff1a;3.3.5实验细节&#xff1a; 四、代码复…...

浏览器插件基于nativeMessaging通信

上一篇文章介绍了基于nativeMessaging启动本地程序&#xff0c;使用官方demo是支持双向通信&#xff0c;demo启动的程序是python写的&#xff0c;现在基于Qt程序进行说明。 消息传递协议 Chrome 会在单独的进程中启动每个原生消息传递主机&#xff0c;并使用标准输入 (stdin)…...

解决 MySQL 8.x 身份验证问题的最佳实践20241126

MySQL 8.x 身份验证问题的深入解析与实践解决方案 &#x1f3af; 引言 &#x1f58b;️ MySQL 是全球最受欢迎的开源数据库之一&#xff0c;随着 MySQL 8.x 的发布&#xff0c;引入了更安全的身份验证插件 caching_sha2_password&#xff0c;显著提升了数据库的安全性和性能。…...

对于GC方面,在使用Elasticsearch时要注意什么?

大家好&#xff0c;我是锋哥。今天分享关于【对于GC方面&#xff0c;在使用Elasticsearch时要注意什么&#xff1f;】面试题。希望对大家有帮助&#xff1b; 对于GC方面&#xff0c;在使用Elasticsearch时要注意什么&#xff1f; 1000道 互联网大厂Java工程师 精选面试题-Java…...

各种排序算法

前置知识 排序: 按照递增或者递减的顺序把数据排列好 稳定性: 值相等的元素在排序之后前后顺序是否发生了改变 内部排序: 数据放在内存上 外部排序: 数据放在磁盘上 内部排序 基于比较的排序 几大排序算法 1. 堆排序 特点: 思想: 1. 创建大根堆,把所有元素放在大根堆里…...

前端-Git

一.基本概念 Git版本控制系统时一个分布式系统&#xff0c;是用来保存工程源代码历史状态的命令行工具 简单来说Git的作用就是版本管理工具。 Git的应用场景&#xff1a;多人开发管理代码&#xff1b;异地开发&#xff0c;版本管理&#xff0c;版本回滚。 Git 的三个区域&a…...

用nextjs开发时遇到的问题

这几天已经基本把node后端的接口全部写完了&#xff0c;在前端开发时考虑时博客视频类型&#xff0c;考虑了ssr&#xff0c;于是选用了nextJs&#xff0c;用的是nextUi,tailwincss,目前碰到两个比较难受的事情。 1.nextUI个别组件无法在服务器段渲染 目前简单的解决方法&…...

Cannot find a valid baseurl for repo: centos-sclo-rh/x86_64

yum install 报错: Cannot find a valid baseurl for repo: centos-sclo-rh/x86_64 CentOS7的SCL源在2024年6月30日停止维护了。 当scl源里面默认使用了centos官方的地址&#xff0c;无法连接&#xff0c;需要替换为阿里云。 cd /etc/yum.repos.d/ 找到 CentOS-SCLo-scl.repo 和…...

HCIA笔记3--TCP-UDP-交换机工作原理

1. tcp协议 可靠的连接 1.1 报文格式 1.2 三次握手 1.3 四次挥手 为什么TIME_WAIT需要2MSL的等待时间&#xff1f; &#xff08;a&#xff09; 为了实现可靠的关闭 &#xff08;b&#xff09;为了让过期的报文在网络上消失 对于(a), 假设host发给server的last ack丢了。 ser…...

RabbitMQ原理架构解析:消息传递的核心机制

文章目录 一、RabbitMQ简介1.1、概述1.2、特性 二、RabbitMQ原理架构三、RabbitMQ应用场景3.1、简单模式3.2、工作模式3.3、发布订阅3.4、路由模式3.5 主题订阅模式 四、同类中间件对比五、RabbitMQ部署5.1、单机部署5.2、集群部署&#xff08;镜像模式&#xff09;5.3、K8s部署…...

C语言指针作业

//8-29 第八章作业 //3.输入10个整数,将其中最小的数第一个数对换,把最大的数与最后一个数对换 //写3个函数:①输人10个数;②进行处理;③输出10个数。 //①输人10个数&#xff0c; //方法一&#xff1a;数组索引 void main() {int arr[10];int *p arr;//printf("请输入…...

区块链:比特币-Binance

写在前面&#xff1a;相对于Tran和BNB而言&#xff0c;Binance不支持智能合约&#xff1b;大约每 10分钟 生成一个新区块 一、认识Binance 官方网站&#xff1a;Blockchain Explorer - Bitcoin Tracker & More | Blockchain.com 官方文档&#xff1a;Authentication – I…...

数据工程流程

** 数据工程流程图** #mermaid-svg-ArT55xCISSfZImy3 {font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;fill:#333;}#mermaid-svg-ArT55xCISSfZImy3 .error-icon{fill:#552222;}#mermaid-svg-ArT55xCISSfZImy3 .error-text{fill:#552222;stroke…...

使用Python和Pybind11调用C++程序(CMake编译)

目录 一、前言二、安装 pybind11三、编写C示例代码四、结合Pybind11和CMake编译C工程五、Python调用动态库六、参考 一、前言 跨语言调用能对不同计算机语言进行互补&#xff0c;本博客主要介绍如何实现Python调用C语言编写的函数。 实验环境&#xff1a; Linux gnuPython3.10…...

基于springboot的县市级土地使用监控系统的设计与实现

文末获取本系统&#xff08;程序源码数据库调试部署开发环境&#xff09;文末可获取&#xff0c;系统界面在最后面。 摘 要 如今社会上各行各业&#xff0c;都喜欢用自己行业的专属软件工作&#xff0c;互联网发展到这个时候&#xff0c;人们已经发现离不开了互联网。新技术的…...

Hot100 - 最大子数组和

Hot100 - 最大子数组和 最佳思路&#xff1a;动态规划 时间复杂度&#xff1a;O(n) 代码&#xff1a; class Solution {public int maxSubArray(int[] nums) {int sum 0;int ans Integer.MIN_VALUE;for (int i 0; i < nums.length; i) {// 如果 sum > 0&#xff0c…...

Matlab 深度学习 PINN测试与学习

PINN 与传统神经网络的区别 与传统神经网络的不同之处在于&#xff0c;PINN 能够以微分方程形式纳入有关问题的先验专业知识。这些附加信息使 PINN 能够在给定的测量数据之外作出更准确的预测。此外&#xff0c;额外的物理知识还能在存在含噪测量数据的情况下对预测解进行正则…...

[STM32]从零开始的STM32 FreeRTOS移植教程

一、前言 如果能看到这个教程的话&#xff0c;说明大家已经学习嵌入式有一段时间了。还记得嵌入式在大多数时候指的是什么吗&#xff1f;是的&#xff0c;我们所说的学习嵌入式大部分时候都是在学习嵌入式操作系统。从简单的一些任务状态机再到复杂一些的RTOS&#xff0c;再到最…...

软件团队的共担责任

问责制被认为是个人与其社会系统之间的纽带&#xff0c;它创造了一种将个人与其行为和绩效联系起来的身份关系。在入门系列的第一篇文章《超越工具和流程&#xff1a;成功软件开发团队的策略》中&#xff0c;我们介绍了问责制的概念&#xff0c;并提出了以下定义&#xff1a; …...

代码美学:MATLAB制作渐变色

输入颜色个数n&#xff0c;颜色类型&#xff1a; n 2; % 输入颜色个数 colors {[1, 0, 0], [0, 0, 1]}; createGradientHeatmap(n, colors); 调用函数&#xff1a; function createGradientHeatmap(n, colors)% 输入检查if length(colors) ~ nerror(输入的颜色数量与n不一…...

Perforce SAST专家详解:自动驾驶汽车的安全与技术挑战,Klocwork、Helix QAC等静态代码分析成必备合规性工具

自动驾驶汽车安全吗&#xff1f;现代汽车的软件包含1亿多行代码&#xff0c;支持许多不同的功能&#xff0c;如巡航控制、速度辅助和泊车摄像头。而且&#xff0c;这些嵌入式系统中的代码只会越来越复杂。 随着未来汽车的互联程度越来越高&#xff0c;这一趋势还将继续。汽车越…...

大模型中常见的微调方法有哪些?

我整理了1000道算法面试题&#xff1a; 获取 这里说的微调主要是指参数微调&#xff0c;参数微调的方法主要有以下几种&#xff1a; - Adapter 在预训练模型每一层(或某些层)中添加Adapter模块(如上图左侧结构所示)&#xff0c;微调时冻结预训练模型主体&#xff0c;由Ada…...

MATLAB支持的距离度量

距离度量是用于量化两个点或样本之间差异的一种方法。在不同的领域和应用场景中&#xff0c;距离度量的选择可能会有所不同。 欧几里得距离&#xff08;Euclidean Distance&#xff09;&#xff1a;这是最直观的距离定义&#xff0c;适用于n维空间中的两点。对于二维空间中的点…...

c++编程玩转物联网:使用芯片控制8个LED实现流水灯技术分享

在嵌入式系统中&#xff0c;有限的GPIO引脚往往限制了硬件扩展能力。74HC595N芯片是一种常用的移位寄存器&#xff0c;通过串行输入和并行输出扩展GPIO数量。本项目利用树莓派Pico开发板与74HC595N芯片&#xff0c;驱动8个LED实现流水灯效果。本文详细解析项目硬件连接、代码实…...

LSA详情与特殊区域

LSA是构成LSDB的重要原材料&#xff0c;在OSPF中发挥很大作用。 报文 通用头部 LS age&#xff1a;LSA寿命&#xff0c;0-3600s Options&#xff1a;可选项 LS type&#xff1a;LSA类型&#xff0c;三要素之一 Link State ID&#xff1a;LSAID 三要素之一 Advertising Ro…...

Leecode刷题C语言之交替组①

执行结果:通过 执行用时和内存消耗如下&#xff1a; 代码如下&#xff1a; int numberOfAlternatingGroups(int* colors, int colorsSize) {int res 0;for (size_t i 0; i < colorsSize; i) {if (colors[i] ! colors[(i - 1 colorsSize) % colorsSize] && col…...

深入解析 Django 中数据删除的最佳实践:以动态管理镜像版本为例

文章目录 引言场景与模型设计场景描述 删除操作详解1. 删除单个 Tag2. 批量删除 Tags3. 删除前确认4. 日志记录 高阶优化与问题分析1. 外键约束与误删保护2. 并发删除的冲突处理3. 使用软删除 结合 Django Admin 的实现总结与实践思考 引言 在现代应用开发中&#xff0c;服务和…...

4457数字示波器 2Gpts的深度存储

4457数字示波器 2Gpts的深度存储 256级灰度等级及四种波形色彩显示 4457M系列数字示波器&#xff0c;带宽从1GHz到4GHz&#xff0c;采样率10GSa/s、20GSa/s&#xff0c;垂直分辨率12bit&#xff0c;存储深度1Gpts&#xff0c;最快波形捕获率70万个波形/秒&#xff0c;独创的…...

【笔记】轻型民用无人驾驶航空器安全操控

《轻型民用无人驾驶航空器安全操控》 理论考试培训材料 法规部分 【民用无人驾驶航空器的分类】 1、如何定义微型、轻型无人驾驶航空器&#xff1f; 微型无人驾驶航空器&#xff0c;是指空机重量小于0.25千克&#xff0c;最大平飞速度不超过40千米/小时&#xff0c;无线电发…...

【leetcode】动态规划

31. 873. 最长的斐波那契子序列的长度 题目&#xff1a; 如果序列 X_1, X_2, ..., X_n 满足下列条件&#xff0c;就说它是 斐波那契式 的&#xff1a; n > 3对于所有 i 2 < n&#xff0c;都有 X_i X_{i1} X_{i2} 给定一个严格递增的正整数数组形成序列 arr &#xff0…...

嵌入式linux系统中图像处理基本方法

目录 2.1 BMP图像处理 2.1.1 BMP文件格式解析 2.1.2 代码实现:将BMP文件解析为RGB格式,在LCD上显示 2.2 JPEG图像处理 2.2.1 JPEG文件格式和libjpeg编译 2.2.2 libjpeg接口函数的解析和使用 2.2.3 使用libjpeg把JPEG文件解析为RGB格式,在LCD上显示 …...

Qt SQL模块概述

Qt SQL支持的数据库 要在项目中使用 Qt SQL 模块&#xff0c;需要在项目配置文件中添加下面一条设置语句&#xff1a; Qt sql在头文件或源文件中使用 Qt SQL 模块中的类&#xff0c;可以使用包含语句&#xff1a; #include <QtSql>这样会将某个 Qt SQL 模块中的所有类…...

PVE相关名词通俗表述方式———多处细节实验(方便理解)

PVE设置初期&#xff0c;对CIDR、 网关、 LinuxBridge、VLAN等很有困惑的朋友一定很需要一篇能够全面通俗易懂的方式去理解PVE 中Linux网桥的工作方式&#xff0c;就像操作一个英雄&#xff0c;多个技能&#xff0c;还是需要一点点去学习理解的&#xff0c;如果你上来就对着别人…...

C语言实现冒泡排序:从基础到优化全解析

一、什么是冒泡排序&#xff1f; 冒泡排序&#xff08;Bubble Sort&#xff09;是一种经典的排序算法&#xff0c;其工作原理非常直观&#xff1a;通过多次比较和交换相邻元素&#xff0c;将较大的元素“冒泡”到数组的末尾。经过多轮迭代&#xff0c;整个数组会变得有序。 二…...

ReentrantLock(可重入锁) Semaphore(信号量) CountDownLatch

目录 ReentrantLock(可重入锁) &Semaphore(信号量)&CountDownLatchReentrantLock(可重入锁)既然有了synchronized&#xff0c;为啥还要有ReentrantLock?Semaphore(信号量)如何确保线程安全呢&#xff1f;CountDownLatch ReentrantLock(可重入锁) &Semaphore(信号量…...

Zookeeper选举算法与提案处理概览

共识算法(Consensus Algorithm) 共识算法即在分布式系统中节点达成共识的算法&#xff0c;提高系统在分布式环境下的容错性。 依据系统对故障组件的容错能力可分为&#xff1a; 崩溃容错协议(Crash Fault Tolerant, CFT) : 无恶意行为&#xff0c;如进程崩溃&#xff0c;只要…...

Jmeter中的断言

7&#xff09;断言 1--响应断言 功能特点 数据验证&#xff1a;验证响应数据是否包含或不包含特定的字符串、模式或值。多种匹配类型&#xff1a;支持多种匹配类型&#xff0c;如文本、正则表达式、文档等。灵活配置&#xff1a;可以设置多个断言条件&#xff0c;满足复杂的测…...

【通俗理解】隐变量的变分分布探索——从公式到应用

【通俗理解】隐变量的变分分布探索——从公式到应用 关键词提炼 #隐变量 #变分分布 #概率模型 #公式推导 #期望最大化 #机器学习 #变分贝叶斯 #隐马尔可夫模型 第一节&#xff1a;隐变量的变分分布的类比与核心概念【尽可能通俗】 隐变量的变分分布就像是一场“捉迷藏”游戏…...

Vivado程序固化到Flash

在上板调试FPGA时&#xff0c;通常使用JTAG接口下载程序到FPGA芯片中&#xff0c;FPGA本身是基于RAM工艺的器件&#xff0c;因此掉电后会丢失芯片内的程序&#xff0c;需要重新烧写程序。但是当程序需要投入使用时不能每一次都使用JTAG接口下载程序&#xff0c;一般FPGA的外围会…...

铲屎官进,2024年宠物空气净化器十大排行,看看哪款吸毛最佳?

不知道最近换毛季&#xff0c;铲屎官们还承受的住吗&#xff1f;我家猫咪每天都在表演“天女散花”&#xff0c;家里没有一块干净的地方&#xff0c;空气中也都是堆积的浮毛&#xff0c;幸好有宠物空气净化器这种清理好物。宠物空气净化器针对宠物浮毛设计&#xff0c;可以有效…...

SpringBoot 项目中使用 spring-boot-starter-amqp 依赖实现 RabbitMQ

文章目录 前言1、application.yml2、RabbitMqConfig3、MqMessage4、MqMessageItem5、DirectMode6、StateConsumer&#xff1a;消费者7、InfoConsumer&#xff1a;消费者 前言 本文是工作之余的随手记&#xff0c;记录在工作期间使用 RabbitMQ 的笔记。 1、application.yml 使…...

嵌入式硬件实战提升篇(二)PCB高速板设计 FPGA核心板带DDR3 PCB设计DDR全面解析

引言&#xff1a;设计一款高速板&#xff0c;供读者学习&#xff0c;FPGA核心板&#xff0c;带一颗DDR3内存&#xff0c;FPGA型号&#xff1a;XC6SLX16-2FTG256C。 随着嵌入式硬件技术的快速发展&#xff0c;高速板设计逐渐成为嵌入式系统设计中的核心技术之一。高速板的设计要…...

2044:【例5.12】回文字串

【题目描述】 输入一串字符,字符个数不超过100,且以“.”结束。 判断它们是否构成回文。 【输入】 一行字符串。 【输出】 是否为回文串。是输出“Yes”&#xff0c;否输出“No。” 【输入样例】 abccb 【输出样例】 No 代码实现 #include <stdio.h> /*2044&#x…...

Sui 链游戏开发实战:用 Move 写一个链上剪刀石头布游戏!

系列文章目录 Task1&#xff1a;hello move&#x1f6aa; Task2&#xff1a;move coin&#x1f6aa; Task3&#xff1a;move nft&#x1f6aa; Task4&#xff1a;move game&#x1f6aa; 更多精彩内容&#xff0c;敬请期待&#xff01;✌️ 文章目录 系列文章目录前言什么是 …...

Prometheus告警带图完美解决方案

需求背景 告警分析处理流程 通常我们收到 Prometheus 告警事件通知后&#xff0c;往往都需要登录 Alertmanager 页面查看当前激活的告警&#xff0c;如果需要分析告警历史数据信息&#xff0c;还需要登录 Prometheus 页面的在 Alerts 中查询告警 promQL 表达式&#xff0c;然…...

深度学习模型:循环神经网络(RNN)

一、引言 在深度学习的浩瀚海洋里&#xff0c;循环神经网络&#xff08;RNN&#xff09;宛如一颗独特的明珠&#xff0c;专门用于剖析序列数据&#xff0c;如文本、语音、时间序列等。无论是预测股票走势&#xff0c;还是理解自然语言&#xff0c;RNN 都发挥着举足轻重的作用。…...