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

[dp8_子数组] 乘积为正数的最长子数组长度 | 等差数列划分 | 最长湍流子数组

目录

1.乘积为正数的最长子数组长度

2.等差数列划分

3.最长湍流子数组


  • 写代码做到,只用维护好自己的一小步

1.乘积为正数的最长子数组长度

链接:1567. 乘积为正数的最长子数组长度

给你一个整数数组 nums ,请你求出乘积为正数的最长子数组的长度。

一个数组的子数组是由原数组中零个或者更多个连续数字组成的数组。

请你返回乘积为正数的最长子数组长度。

示例 1:

输入:nums = [1,-2,-3,4]
输出:4
解释:数组本身乘积就是正数,值为 24 。

示例 2:

输入:nums = [0,1,-2,-3,-4]
输出:3
解释:最长乘积为正数的子数组为 [1,-2,-3] ,乘积为 6 。
注意,我们不能把 0 也包括到子数组中,因为这样乘积为 0 ,不是正数。

  • 在上一题当中我们求过了,乘积最大的子数组,现在我们找的是乘积为正数的,最长的子数组
  • 我们该如何分析这个状态呢

求乘积为正数最大子数组长度。


1.状态表示

  • 经验 + 题目要求
  • dp[i] 表示 :以 i 位置元素为结尾的所有子数组中乘积为正数的最大长度

还是先以这个分析

  • i 本身也是子数组,然后为空看nums[i] 是正还是负。
  • 还有以 i 位置为结尾的子数组,求所有子数组中乘积为正数的最大长度,nums[i]要分正还是负,剩下的子数组都有一个特点就是以 i - 1结尾
  • 所以我们可以将以 i -1 位置元素为结尾的所有子数组中乘积为正数的最大长度拿到
  • 然后在加上nums[i]为正为负的情况。

我们由上面的状态表示去分析,发现当子数组长度大于1,nums[i] < 0,分析不下去了,如果前面 i - 1 位置有乘积为负数最大长度,负数乘nums[i] > 0,乘积也大于0,那长度不也应该加+1嘛。

  • 所以一个状态表示不够。
  • f[i] 表示:以 i 位置元素为结尾所有子数组中乘积为正数的最大长度
  • g[i] 表示:以 i 位置元素为结尾所有子数组中乘积为负数的最大长度
  • 然后再结合上自身的正负,对于F和G的选择进行考虑

2.状态转移方程

我们先来分析一下 f

当长度大于1,nums[i] < 0,所以我们要找到的是 i - 1位置元素为结尾所有子数组中乘积为负数的最大长度,但是要注意的是

  • 万一 g[i - 1] 位置为0呢?也就是说前面根本就没有乘积为负数的最大长度。
  • 所以继续保持为零即可

因此这里不能这样写,需要判断一下:

  • g[i-1]==0?0:g[i-1]+1

再来分析一下g

长度大于1,nums[i] > 0,所以我们要找到的是 i - 1位置元素为结尾所有子数组中乘积为负数的最大长度

  • 但是万一 g[i - 1] 是 0呢?
  • 乘积不可能为负,而nums[i] > 0,这种情况以 i 位置元素为结尾所有子数组中乘积为负数的最大长度就是0,因此下面写的就不对。

正确写法:

  • g[i-1]==0?0:g[i-1]+1

有人可能会有疑问:为什么f 当长度大于1,nums[i] > 0,不去考虑 f[i -1] 为0的情况呢

  • 其实我们已经考虑过了,f[i -1] 为0就为0好了,反正nums[i] > 0至少有1个
  • 同样g 当长度大于1,nums[i] < 0, 不去考虑 f[i -1]为0的情况,都是一样的
  • f[i -1] 为0就为0好了,反正nums[i] < 0至少有1个。如果大于0 就加上好了。

下面可以整体一下状态转移方程

  • f[i],可以把 nums[i] > 0 两种情况合并成 f[i - 1] + 1,因为nums[i] > 0 至少保证有一个了,如果f[i - 1] == 0 最终结果可以是两个1中任何一个
  • 如果 f[i - 1] > 0,最大值是由f[i - 1] + 1来决定,所以不用考虑上面单独1了。
  • nums[i] < 0 两种情况合并成 g[i -1] ==
  • z0 ?:g[i -1] + 1,要么是0,要么是比0更大的数,最大值由g[i -1] == 0 ?:g[i -1]决定
  • 注意因为这个地方求的是长度,长度就只有零和一之分,所以是可以这么合并的

同理g也是这样合并

(维护 g 表其实就是为了对负数做处理,要运用到负负得正)

3.初始化

注意到填表填 0 位置的时候会越界。我们这里可以多申请一个节点

  1. 里面的值要保证后面填表的正确
  2. 下标映射关系

考虑没有填表的时候g第一个位置填什么,nums[0] > 0 填0,nums[0] < 0填1。
代入是不是f[i - 1] 和 g[i -1] 的位置都填0啊,所以虚拟节点填0。

  • 原数组对应的下标要-1

4.填表顺序

  • 从左往右
  • 两个表一起填

5.返回值

  • f表中最大值
class Solution {
public:int getMaxLen(vector<int>& nums) {int n=nums.size();vector<int> f(n+1);auto g=f;for(int i=1;i<=n;i++){//下表映射if(nums[i-1]>0){f[i]=f[i-1]+1;g[i]=g[i-1]==0?0:g[i-1]+1;}if(nums[i-1]<0){f[i]=g[i-1]==0?0:g[i-1]+1;g[i]=f[i-1]+1;}}int ret=0;for(int i=1;i<=n;i++){ret=max(ret,f[i]);}return ret; }
};

2.等差数列划分

链接: 413. 等差数列划分

如果一个数列 至少有三个元素 ,并且任意两个相邻元素之差相同,则称该数列为等差数列。

  • 例如,[1,3,5,7,9][7,7,7,7][3,-1,-5,-9] 都是等差数列。

给你一个整数数组 nums ,返回数组 nums 中所有为等差数组的 子数组 个数。

子数组 是数组中的一个连续序列。

示例 1:

输入:nums = [1,2,3,4]
输出:3
解释:nums 中有三个子等差数组:[1, 2, 3]、[2, 3, 4] 和 [1,2,3,4] 自身。

示例 2:

输入:nums = [1]
输出:0

  • 如果一个数列 至少有三个元素并且任意两个相邻元素之差相同,则称该数列为等差数列。
  • 返回数组 nums 中所有为等差数组的 子数组 个数。

算法原理:

1.状态表示

  • 经验 + 题目要求
  • 以 i 位置为结尾,巴拉巴拉。
    题目要求,求数组中为等差数组的子数组个数,也就是子数组中有多少个等差数列
  • dp[i] 表示:以 i 位置元素为结尾的所有子数组中有多少个等差数列。

2.状态转移方程

  • 如果[a, b, c, d]已经构成一个等差数列,d后面在加一个e,与c、d、e构成等差数列,[a, b, c, d, e]也是构成等差数列。
  • dp[i] 表示:以 i 位置元素为结尾的所有子数组中有多少个等差数列。子数组要求是连续的
  • 所以求 i 位置,要先去看 i -1 和 i - 2 cvs 的位置。
  • i - 2 位置元素设为a,i - 1 位置元素设为b、i 位置元素设为c

先考虑a、b、c是否构成一个等差数列。

  • 如果abc能构成一个等差数列,那就是以ab为结尾的等差数列后面在加一个c,这些数列也是构成一个等差数列,以ab为结尾就相当于以b为结尾,以b为结尾的等差数列,就在dp[i-1]存着。别忘记 abc也能构成一个等差数列。
  • abc不能构成一个等差数列,即使a前面能构成等差数列,但是与 i 位置不连续,因此就构不成以 i 位置为结尾的等差数列

3.初始化

  • 这里我们可以直接把dp[0] = dp[1] = 0
  • 注意重新的下标映射

4.填表顺序

  • 从左往右

5.返回值

  • 注意并不是返回最后一个位置,题目要求找的是所有等差数列的个数,因此我们返回的是dp表所有元素的和
class Solution {
public:int numberOfArithmeticSlices(vector<int>& nums) {//a b cint n=nums.size();if(n<2) return 0;vector<int> dp(n);dp[0]=0,dp[1]=0; //将前两个位置初始为零for(int i=2;i<n;i++){//下标映射int a=nums[i-2],b=nums[i-1],c=nums[i];dp[i]=(c-b==b-a?dp[i-1]+1:0); //填表//如果可以,那个状态就可以延续过来}//求和int ret=0;for(int i=0;i<n;i++){ret+=dp[i];}return ret;}
};

3.最长湍流子数组

链接: 978. 最长湍流子数组

给定一个整数数组 arr ,返回 arr最大湍流子数组的长度

如果比较符号在子数组中的每个相邻元素对之间翻转,则该子数组是 湍流子数组

更正式地来说,当 arr 的子数组 A[i], A[i+1], ..., A[j] 满足仅满足下列条件时,我们称其为湍流子数组

  • i <= k < j
    • k 为奇数时, A[k] > A[k+1],且
    • k 为偶数时,A[k] < A[k+1]
  • i <= k < j
    • k 为偶数时,A[k] > A[k+1] ,且
    • k 为奇数时, A[k] < A[k+1]

示例 1:

输入:arr = [9,4,2,10,7,8,8,1,9]
输出:5
解释:arr[1] > arr[2] < arr[3] > arr[4] < arr[5]

示例 2:

输入:arr = [4,8,12,16]
输出:2

  • 给定一个整数数组 arr ,返回 arr 的 最大湍流子数组的长度 。
  • 如果比较符号在子数组中的每个相邻元素对之间翻转,则该子数组是 湍流子数组 。

湍流子数组到底什么东西,我们举个例子,比如说下面,元素大小呈现一升一降的趋势这就是湍流数组。那就称这个数组是湍流子数组。

  • 本身 也算湍流 子数组


算法原理:

1.状态表示

  • 经验 + 题目要求
  • 以 i 位置为结尾,巴拉巴拉

要求找子数组中最大湍流长度。

  • dp[i] 表示:以 i 位置元素为结束的所有子数组中,最大湍流数组的长度

根据最近的一步分析问题,设 i - 1 位置元素为 a,i 位置元素为 b。此时会有三种情况。

  • a > b i位置最后呈现下降趋势
    a < b i位置最后呈现上升趋势
    a == b i位置最呈现平稳趋势

但是我们的状态表示只是表示 以 i 位置元素为结束的所有子数组中,最大湍流数组的长度

并没有分是上升趋势还是下降趋势。

因此一个状态表示不能满足现在的情况。所以我们要换状态表示。

  • f[i] 表示:以 i 位置元素为结尾的所有子数组中,最后呈现 “上升” 状态下的最长湍流数组的长度
  • g[i] 表示:以 i 位置元素为结尾的所有子数组中,最后呈现 “下降” 状态下的最长湍流数组的长度

2.状态转移方程

  • 先来分析f表
    当a > b i 位置最后呈现下降趋势,但是f表要的是 i 位置最后呈现上升趋势,别忘记本身也可以是湍流子数组,因此是1
  • 当a < b i 位置最后呈现上升趋势,去 i - 1位置找到以 i - 1位置为结尾最后呈现下降趋势的最长湍流数组的长度这个就在 g[i - 1]存着,最后别忘记加上1
  • 当 a == b,本身也可以是湍流子数组,因此是1

g表分析和f表分析一样,可以自己试着分析一下。

  • 当a > b i 位置最后呈现下降趋势,去 i - 1位置找到以 i - 1位置为结尾最后呈现上升趋势的最长湍流数组的长度这个就在 f[i - 1]存着,最后别忘记加上1
  • 当a < b i 位置最后呈现上升趋势,但是g表要的是 i 位置最后呈现下降趋势,别忘记本身也可以是湍流子数组,因此是1
  • 当 a == b,本身也可以是湍流子数组,因此是1

3.初始化

填第一个位置会越界,可以把第一个位置初始化,注意本身也可以是湍流子数组,因此第一个位置可以初始化为1

  • 不过这里我们可以把数组初始化都为1,这样的话
    f表 a > b 和 a == b ,g表 a < b 和 a == b
  • 填表的时候就不用考虑了,反正f[i]和g[i]都已经初始化为1了。

4.填表顺序

  • 从左往右
  • 两个表一起填

5.返回值

  • 我们要的是子数组中最大湍流数组的长度,因此是找两个表里面的最大值。
class Solution {
public:int maxTurbulenceSize(vector<int>& arr) {int n=arr.size();vector<int> f(n,1);//本身也是湍流auto g=f;//统计以各个点为结尾 的 长度for(int i=1;i<n;i++){int a=arr[i-1],b=arr[i];if(a>b){f[i]=1;g[i]=f[i-1]+1;}if(a<b){f[i]=g[i-1]+1;g[i]=1;}}int ret=0;for(int i=0;i<n;i++){ret=max(ret,max(f[i],g[i]));}return ret;}
};

相关文章:

[dp8_子数组] 乘积为正数的最长子数组长度 | 等差数列划分 | 最长湍流子数组

目录 1.乘积为正数的最长子数组长度 2.等差数列划分 3.最长湍流子数组 写代码做到&#xff0c;只用维护好自己的一小步 1.乘积为正数的最长子数组长度 链接&#xff1a;1567. 乘积为正数的最长子数组长度 给你一个整数数组 nums &#xff0c;请你求出乘积为正数的最长子数…...

量子机器学习(Quantum Machine Learning, QML)在优化测试组合

量子机器学习(Quantum Machine Learning, QML)在优化测试组合选择中展现出显著潜力,通过量子计算的并行性和量子态叠加特性,可高效解决传统方法难以处理的组合爆炸问题。以下是其技术实现路径、优势及落地案例: 一、QML优化测试组合的核心原理 1. 量子并行性加速搜索 经典…...

Go语言Slice切片底层

Go语言&#xff08;Golang&#xff09;中切片&#xff08;slice&#xff09;的相关知识、包括切片与数组的关系、底层结构、扩容机制、以及切片在函数传递、截取、增删元素、拷贝等操作中的特性。并给出了相关代码示例和一道面试题。关键要点包括&#xff1a; 数组特性&#xf…...

导入 Excel 批量替换文件夹名称

文件夹重命名的需求是多种多样的&#xff0c;前面我们介绍过按照规则修改文件夹名称的方法。但是在某些场景下&#xff0c;这个方法可能是不适用的&#xff0c;比如我们修改文件夹的规则是多种多样的&#xff0c;是无规律的。那我们应该怎么做呢&#xff1f;今天我们就给大家介…...

数据库或表数据迁移(使用Navicat迁移MySQL数据库表数据)

&#x1f91f;致敬读者 &#x1f7e9;感谢阅读&#x1f7e6;笑口常开&#x1f7ea;生日快乐⬛早点睡觉 &#x1f4d8;博主相关 &#x1f7e7;博主信息&#x1f7e8;博客首页&#x1f7eb;专栏推荐&#x1f7e5;活动信息 文章目录 数据库或表数据迁移&#xff08;使用Navicat…...

Matlab Add Legend To Graph-图例添加到图

Add Legeng To Graph: Matlab的legend&#xff08;&#xff09;函数-图例添加到图 将图例添加到图 ,图例是标记绘制在图上的数据序列的有用方法。 下列示例说明如何创建图例并进行一些常见修改&#xff0c;例如更改位置、设置字体大小以及添加标题。您还可以创建具有多列的图…...

【Linux】what is pam?PAM模块学习笔记

文章目录 1. pam模块简介2. pam验证的工作流程3. pam模块配置文件3.1 配置文件的格式3.1.1 验证类别type3.1.2 验证的控制标识 control flag3.1.3 pam模块 4. login的PAM验证机制流程5. 补充&#xff1a;其他pam相关文件6. 参考内容 1. pam模块简介 PAM: Pluggable Authentica…...

5.1 GitHub订阅监控系统实战:FastAPI+SQLAlchemy高效架构设计与核心源码揭秘

GitHub Sentinel Agent 分析报告功能设计与实现 关键词:订阅管理 API 设计、GitHub API 集成、SQLAlchemy ORM、JWT 认证、单元测试框架 1. 订阅管理功能架构设计 订阅管理模块采用分层架构设计,通过 FastAPI 构建 RESTful 接口,结合 SQLAlchemy ORM 实现数据持久化: #me…...

【BEPU V1物理】BEPUphysics v1 入门指南 汉化笔记#1

BEPUphysics v1 入门指南 前言下载获取库工程1.创建物理模拟环境2.添加物理实体3.与物理系统交互4.发射物体5.构建环境6.事件处理7. 进阶学习 前言 本文档记录完成 BEPUphysics 物理引擎的基础设置。 文档链接:https://github.com/bepu/bepuphysics1/blob/master/Documentatio…...

方法加事务在多线程中注意事项

方法加事务在多线程中注意事项 redission分布式锁释放异常问题 https://www.jianshu.com/p/055ae798547a https://blog.csdn.net/cheng__yu/article/details/122625649 虽然文章 https://blog.csdn.net/cheng__yu/article/details/122625649 和 redission锁是没关系的&#…...

开源 2D 横版跳跃游戏 SuperTux

官网 https://www.supertux.org/ 正文 在游戏的世界里&#xff0c;开源游戏以其独特的魅力吸引着众多玩家和开发者。今天要介绍的 SuperTux&#xff0c;便是一款备受瞩目的开源 2D 横版跳跃游戏&#xff0c;风格类似经典的超级马里奥系列。 2024 年&#xff0c;SuperTux 开发团…...

基于HASM模型的高精度建模matlab仿真

目录 1.程序功能描述 2.测试软件版本以及运行结果展示 3.核心程序 4.本算法原理 5.完整程序 1.程序功能描述 本课题主要使用HASM进行高精度建模&#xff0c;主要对HASM模型进行介绍以及在实际中如何进行简化实现的。 2.测试软件版本以及运行结果展示 MATLAB2022A版本运行…...

C++多线程编程时的伪共享问题及其定位和解决

一、引言 在多线程编程和共享内存系统中&#xff0c;为了提高程序性能&#xff0c;常常需要对共享数据进行处理。然而&#xff0c;在并发环境下&#xff0c;一种名为“伪共享&#xff08;False Sharing&#xff09;”的问题可能会悄然出现&#xff0c;它虽然不像传统的多线程同…...

高并发短信系统设计:基于SharingJDBC的分库分表、大数据同步与实时计算方案

高并发短信系统设计&#xff1a;基于SharingJDBC的分库分表、大数据同步与实时计算方案 一、概述 在当今互联网应用中&#xff0c;短信服务是极为重要的一环。面对每天发送2000万条短信的需求&#xff0c;我们需要一个能够处理海量数据&#xff08;一年下来达到数千万亿级别&…...

【HTML】html文件

HTML文件全解析&#xff1a;搭建网页的基石 在互联网的广袤世界里&#xff0c;每一个绚丽多彩、功能各异的网页背后&#xff0c;都离不开HTML文件的默默支撑。HTML&#xff0c;即超文本标记语言&#xff08;HyperText Markup Language&#xff09;&#xff0c;作为网页创建的基…...

5.11 GitHub API调试五大高频坑:从JSON异常到异步阻塞的实战避坑指南

GitHub API调试五大高频坑:从JSON异常到异步阻塞的实战避坑指南 关键词:GitHub API 调试、JSON 解析异常、提示工程优化、异步任务阻塞、数据清洗策略 5.5 测试与调试:调试常见问题 问题1:GitHub API 调用异常 现象: requests.exceptions.HTTPError: 403 Client Error…...

协程的原生挂起与恢复机制

目录 &#x1f50d; 一、从开发者视角看协程挂起与恢复 &#x1f9e0; 二、协程挂起和恢复的机制原理&#xff1a;核心关键词 ✅ suspend 函数 ≠ 普通函数 ✅ Continuation&#xff08;协程的控制器&#xff09; &#x1f527; 三、编译器做了什么&#xff1f;&#xff0…...

机器学习中的数学(PartⅡ)——线性代数:2.2矩阵

概述 本节内容也相对简单&#xff0c;首先介绍了矩阵的定义&#xff0c;矩阵的表示方法&#xff1b;然后介绍了矩阵的加法和乘法&#xff0c;与标量的乘法&#xff0c;以及一些矩阵相关算数运算的性质&#xff0c;包括满足结合律、交换律&#xff1b;矩阵的逆和转置&#xff1…...

泉涌未来:科技与生态的共生诗篇-济南

故事背景 故事发生在中国山东济南的未来城市环境&#xff0c;这里不再是单纯的自然景观与现代建筑的堆砌&#xff0c;而是科技与生态深度融合的奇妙世界。泉水&#xff0c;这一济南的灵魂元素&#xff0c;在未来科技的赋能下&#xff0c;成为连接城市各个角落的纽带。量子态泉水…...

用AI生成系统架构图

DeepSeek+Drawio+SVG绘制架构图-找到一种真正可行实用的方法和思路 1、使用DeepSeek生成SVG文件,导入drawio工具的方法 🔥 问题根源分析 错误现象: • 导入时报错包含 data:image/SVG;base64 和 %20 等 URL 编码字符 • 代码被错误转换为 Base64 格式(适用于网页嵌入,但…...

网络基础1

目录 初识协议 协议分层 软件分层的好处 OSI七层模型 TCP/IP 五层(或四层)模型 再谈协议 为什么要有 TCP/IP 协议&#xff1f; TCP/IP 协议与操作系统的关系 所以究竟什么是协议&#xff1f; 网络传输基本流程 认识 MAC 地址 局域网(以太网为例)通信原理 报文的传…...

免费且好用的PDF水印添加工具

软件介绍 今天要给大家推荐一款超实用的PDF添加水印工具&#xff0c;它能够满足用户给PDF文件添加水印的需求&#xff0c;而且完全免费。 这款PDF添加水印的软件有着简洁的界面&#xff0c;操作简便&#xff0c;无需安装&#xff0c;解压后即可使用。 在使用前&#xff0c;先…...

C++Primer对象移动

欢迎阅读我的 【CPrimer】专栏 专栏简介&#xff1a;本专栏主要面向C初学者&#xff0c;解释C的一些基本概念和基础语言特性&#xff0c;涉及C标准库的用法&#xff0c;面向对象特性&#xff0c;泛型特性高级用法。通过使用标准库中定义的抽象设施&#xff0c;使你更加适应高级…...

互联网三高-数据库高并发之分库分表ShardingJDBC

1 ShardingJDBC介绍 1.1 常见概念术语 ① 数据节点Node&#xff1a;数据分片的最小单元&#xff0c;由数据源名称和数据表组成 如&#xff1a;ds0.product_order_0 ② 真实表&#xff1a;再分片的数据库中真实存在的物理表 如&#xff1a;product_order_0 ③ 逻辑表&#xff1a…...

七、自动化概念篇

自动化测试概念 自动化测试是把以人为驱动的测试行为转化为机器执行的一种过程。通常&#xff0c;在设计了测试用例并通过评审之后&#xff0c;由测试人员根据测试用例中描述的过程一步步执行测试&#xff0c;得到实际结果与期望结果的比较。在此过程中&#xff0c;为了节省人…...

python操作mongodb

1、安装包 pyMongo是MongoDB官方推荐的Python驱动程序&#xff0c;它提供了访问MongoDB数据库所需的接口。安装PyMongo非常简单&#xff0c;可以通过pip包管理工具来安装最新版本&#xff1a; pip install pymongo 安装完成后&#xff0c;我们可以使用以下Python代码来检查是否…...

IS-IS中特殊字段——OL过载

文章目录 OL 过载位 &#x1f3e1;作者主页&#xff1a;点击&#xff01; &#x1f916;Datacom专栏&#xff1a;点击&#xff01; ⏰️创作时间&#xff1a;2025年04月13日20点12分 OL 过载位 路由过载 使用 IS-IS 的过载标记来标识过载状态 对设备设置过载标记后&#xff…...

行星际激波在日球层中的传播:Propagation of Interplanetary Shocks in the Heliosphere (第二部分)

行星际激波在日球层中的传播&#xff1a;Propagation of Interplanetary Shocks in the Heliosphere &#xff08;第一部分&#xff09;-CSDN博客 Propagation of Interplanetary Shocks in the Heliosphere [ Chapter 3 ] [PDF: arXiv] 本文保留原文及参考文献&#xff0c;参…...

紫光同创FPGA实现HSSTLP光口视频点对点传输,基于Aurora 8b/10b编解码架构,提供6套PDS工程源码和技术支持

目录 1、前言工程概述免责声明 2、相关方案推荐我已有的所有工程源码总目录----方便你快速找到自己喜欢的项目紫光同创FPGA相关方案推荐我这里已有的 GT 高速接口解决方案Xilinx系列FPGA实现GTP光口视频传输方案推荐Xilinx系列FPGA实现GTX光口视频传输方案推荐Xilinx系列FPGA实…...

正则表达式使用知识(日常翻阅)

正则表达式使用 一、字符匹配 1. 普通字符 描述&#xff1a;直接匹配字符本身。示例&#xff1a; abc 匹配字符串中的 “abc”。Hello 匹配字符串中的 “Hello”。 2. 特殊字符 .&#xff08;点号&#xff09;&#xff1a; 描述&#xff1a;匹配任意单个字符&#xff08;…...

CSS padding(填充)学习笔记

CSS 中的 padding&#xff08;填充&#xff09;是一个非常重要的属性&#xff0c;它用于定义元素边框与元素内容之间的空间&#xff0c;即上下左右的内边距。合理使用 padding 可以让页面布局更加美观、清晰。以下是对 CSS padding 的详细学习笔记。 一、padding 的作用 padd…...

Python中的字符串、列表、字典和集合详解

Python是一门强大的编程语言&#xff0c;其内置的数据结构丰富多样。其中&#xff0c;字符串、列表、字典和集合是最常用的数据类型。本文将对它们的区别、用法和使用场景进行详细介绍&#xff0c;帮助大家更好地理解和应用这些数据结构。 1. 字符串&#xff08;String&#xf…...

【CUDA编程】CUDA Warp 与 Warp-Python 对比文档

相关文档: Nvidia-Warp GitHub&#xff1a;nvidia/warp CUDA Warp 和 Warp-Python 库 的对比与统一文档&#xff0c;涵盖两者的核心概念、区别、使用场景及示例&#xff1a; 1. CUDA Warp&#xff08;硬件/编程模型概念&#xff09; 1.1 定义与核心概念 定义&#xff1a; C…...

中厂算法岗面试总结

时间&#xff1a;2025.4.10 地点&#xff1a;上市的电子有限公司 面试流程&#xff1a; 1.由负责人讲解公司文化 2&#xff0c;由技术人员讲解公司的技术岗位&#xff0c;还有成果 3.带领参观各个工作位置&#xff0c;还有场所 4.中午吃饭 5.面试题&#xff0c;闭卷考试…...

Losson 4 NFS(network file system(网络文件系统))

网络文件系统&#xff1a;在互联网中共享服务器中文件资源。 使用nfs服务需要安装:nfs-utils 以及 rpcbind nfs-utils : 提供nfs服务的程序 rpcbind &#xff1a;管理nfs所有进程端口号的程序 nfs的部署 1.客户端和服务端都安装nfs-utils和rpcbind #安装nfs的软件rpcbind和…...

自动化运行后BeautifulReport内容为空

一、问题描述 自动化程序运行后发现运行目录下生成的html报告文件内容为空&#xff0c;没有运行结果。 二、测试环境 操作系统&#xff1a;Windows 11 家庭版BeautifulReport&#xff1a;0.1.3Python&#xff1a;3.11.9Appium-Python-Client&#xff1a;5.0.0Appium Server:2.…...

CTF-WEB排行榜制作

CTF-WEB排行榜制作 项目需求&#xff1a; 现在14道题对应有14个flag&#xff0c;我需要使用dockerfile搭建一个简单的&#xff0c;能够实现验证这些题目对应的flag来计分的简单网站&#xff08;要求页面比较精美&#xff09; 前十题设置为10分 11-14题设置为20分 1. flag{5a3…...

架构生命周期(高软57)

系列文章目录 架构生命周期 文章目录 系列文章目录前言一、软件架构是什么&#xff1f;二、软件架构的内容三、软件设计阶段四、构件总结 前言 本节讲明架构设计的架构生命周期概念。 一、软件架构是什么&#xff1f; 二、软件架构的内容 三、软件设计阶段 四、构件 总结 就…...

STM32单片机定时器的输入捕获和输出比较

目录 一、定时器的输入捕获 1、工作原理 2、示例代码 二、定时器的输出比较 1、工作原理 2、示例代码 三、总结 在STM32单片机中&#xff0c;定时器是一个非常重要的外设&#xff0c;广泛应用于时间管理、事件计时、波形生成等多种场景。其中输入捕获和输出比较是两个基…...

计算机组成原理-系统总线

1. 系统总线的定义 系统总线是计算机系统中各功能部件&#xff08;CPU、存储器、I/O设备等&#xff09;之间传递信息的公共通路&#xff0c;遵循统一的电气规范和时序协议&#xff0c;是计算机硬件互联的基础。 核心作用&#xff1a;实现数据、地址和控制信号的传输&#xff…...

【android bluetooth 框架分析 02】【Module详解 3】【HciHal 模块介绍】

1. 背景 我们在 gd_shim_module 介绍章节中&#xff0c;看到 我们将 HciHal 模块加入到了 modules 中。 modules.add<hal::HciHal>();在 ModuleRegistry::Start 函数中我们对 加入的所有 module 挨个初始化。 而在该函数中启动一个 module 都要执行那下面几步&#xff…...

Git 远程仓库

Git 入门笔记 远程仓库 Git 远程仓库 Git 远程仓库是一个托管在网络服务器上的代码仓库&#xff0c;它是团队协作开发的核心。 通过远程仓库&#xff0c;开发者可以共享代码、同步更新&#xff0c;实现分布式协作。 SSH 密钥 SSH 密钥可以让你在使用 Git 时安全地连接远程…...

209.长度最小的子数组- 力扣(LeetCode)

题目&#xff1a; 给定一个含有 n 个正整数的数组和一个正整数 target 。 找出该数组中满足其总和大于等于 target 的长度最小的 子数组 [numsl, numsl1, ..., numsr-1, numsr] &#xff0c;并返回其长度。如果不存在符合条件的子数组&#xff0c;返回 0 。 示例 1&#xff1a;…...

符号右移“ >>= “ 与 无符号右移“ >>>= “ 的区别

符号右移" >> " 与 无符号右移" >>> " 的区别 一、符号右移" >> " 与 无符号右移" >>> " 的区别1. 符号右移&#xff08;>>&#xff09;与无符号右移&#xff08;>>>&#xff09;的区别…...

山东大学软件学院项目实训-基于大模型的模拟面试系统-专栏管理部分

本周我的主要任务是关于专栏管理部分的完善。 专栏图片的显示问题 问题分析 根据代码可知&#xff1a;图片URL来自于portfolio.headImgUrl&#xff0c;而且如果URL不存在的话&#xff0c;应该显示的是无图片&#xff0c;而网页中显示加载失败说明portfolio.headImgUrl应该是存…...

从 SYN Flood 到 XSS:常见网络攻击类型、区别及防御要点

常见的网络攻击类型 SYN Flood、DoS&#xff08;Denial of Service&#xff09; 和 DDoS&#xff08;Distributed Denial of Service&#xff09; 是常见的网络攻击类型&#xff0c;它们的目标都是使目标系统无法正常提供服务。以下是它们的详细说明&#xff1a; 1. SYN Flood…...

ros2-rviz2控制unity仿真的6关节机械臂,探索从仿真到实际应用的过程

文章目录 前言&#xff08;Introduction&#xff09;搭建开发环境&#xff08;Setup Development Environment&#xff09;在window中安装Unity&#xff08;Install Unity in window&#xff09;创建Docker容器&#xff0c;并安装相关软件&#xff08;Create Docker containers…...

01_通过调过api文字生成音频示例

第1 第2 第3&#xff0c;测试音色 第4 第5 第6 第7生成api_key 第8代码 import requestsurl "https://api.siliconflow.cn/v1/audio/speech"payload {"input": "在中国传统文化中&#xff0c;谦让被视为一种美德&#xff0c;但过度的让步…...

使用PyTorch实现目标检测边界框转换与可视化

一、引言 在目标检测任务中&#xff0c;边界框&#xff08;Bounding Box&#xff09;的坐标表示与转换是核心基础操作。本文将演示如何&#xff1a; 实现边界框的两种表示形式&#xff08;角点坐标 vs 中心坐标&#xff09;之间的转换 使用Matplotlib在图像上可视化边界框 验…...

QEMU学习之路(8)— ARM32通过u-boot 启动Linux

QEMU学习之路&#xff08;8&#xff09;— ARM32通过u-boot 启动Linux 一、前言 参考文章&#xff1a; Linux内核学习——内核的编译和启动 Linux 内核的编译和模拟执行 Linux内核运行——根文件系统 Linux 内核学习——使用 uboot 加载内核 二、构建Linux内核 1、获取Linu…...