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

深度解析之算法之分治(快排)

44.颜色分类

题目链接
给定一个包含红色、白色和蓝色、共 n 个元素的数组 nums ,原地 对它们进行排序,使得相同颜色的元素相邻,并按照红色、白色、蓝色顺序排列。

我们使用整数 0、 1 和 2 分别表示红色、白色和蓝色。

必须在不使用库内置的 sort 函数的情况下解决这个问题。

示例 1:

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

示例 2:

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

就是给这三类进行排序

解法:三指针
i这个指针遍历数组
left指针标记0区域最右侧
right标记2区域的最左侧
那么此时我们的数组就被划分为四个部分了
image.png
[0,left]:全是0
[left+1,i-1]:全都是1
[i,right-1]:带扫描的元素
[right,n-1]:全都是2

如果我们此时的nums[i]=0的话,那么我们将当前位置的0和nums[left+1]位置的数进行交换操作,

但是如果我们此时i的位置就是left+1的话,那么我们将left和left+1的位置进行交换操作,但是我们交换后我们的left还是要往后面移动,不如我们先让left先进行++操作
我们更换下代码的思路,如果我们当前的nums[i]=0的话,我们直接将nums[++left]和nums[i++]进行交换,我们先将left++和i的位置交换,交换完成之后我们的i再往后面进行移动的操作

如果我们的nums[i]=1的话,那么我们直接将i++就行了,因为我们此时的[left+1,i-1]范围内都是1

如果我们此时的nums[i]=2的话,我们将此时的位置和right-1进行交换操作
代码的话我们可以先让right–,然后再将我们和我们i位置的交换,这样我们的指针也进行了移动的操作,此时我们将原先right-1的位置和i位置的元素进行交换了,那么我们此时的i位置的元素还是带扫描的元素,因为我们将后面的元素挪动到前面来了,我们此时是不需要动i的

思路如下
image.png
当我们i和right相遇之后,我们的带扫描的元素都扫描完成了
image.png

class Solution{public:void sortColors(vector<int>& nums){int n =nums.size();//三个指针int left=-1,right=n,i=0;while(i<right)//当我们的i和right相遇之后的话循环就结束了{if(nums[i]==0)swap(nums[++left],nums[i++]);else if(nums[i]==1) i++;else swap(nums[--right],nums[i]);}}};

45.快速排序

题目链接
给你一个整数数组 nums,请你将该数组升序排列。

你必须在 不使用任何内置函数 的情况下解决问题,时间复杂度为 O(nlog(n)),并且空间复杂度尽可能小。

示例 1:

输入: nums = [5,2,3,1]
输出:[1,2,3,5]

示例 2:

输入: nums = [5,1,1,2,0,0]
输出:[0,0,1,1,2,5]

用数组分三块的思想,实现快排
左边的区域是小于key的,中间的是等于key的,右边的是大于key的,和我们上面的颜色分类是一样的
image.png

当我们的nums[i]<key的话,那么我们需要将nums[++left]位置和num[i+1]的位置进行交换

如果等于k的话,那么就是i++

如果大于k的话,那么就是交换nums[–right]和nums[i]进行交换的,这里交换完成之后我们是 不需要进行i++的,因为这种情况交换后的i++

优化:使用随机的方式选择基准元素,这样可以让我们的时间复杂度接近于nlon N
等概率的返回区间上任意一个数字

我们让r=rand()
r%(right-left+1)+left
我们的r%(right-left+1)的范围就是[o,n-1]
然后我们加上一个left得到的就是一个随机值了image.png
我们这里的这个是一个随机的下标
所以我们的基准元素就是nums[r%(right-left+1)+left]

class Solution{public:vector<int> sortArray(vector<int>& nums){srand(time(NULL));//种下一个随机数种子qsort(nums,0,nums.size()-1);//将数组、左指针和右指针的下标传过去return nums;}//快排void qsort(vector<int>&nums,int l,int r){if(l>=r) return ;//要么你的区间是只有一个元素,要么就是区间不存在的//数组分三块int key=getRandom(nums,l,r);//getRandom可以根据数组和左区间右区间进行随机数的获取操作//进行三个指针的初始化操作int i=l,left=l-1,right=r+1;//left从区间的最左侧开始,right从区间的最右侧开始while(i<right){if(nums[i]<key){swap(nums[++left],nums[i++]);}else if(nums[i]==key){i++;}else{swap(nums[--right], nums[i]);}}//分成三块之后//[l,left] [left+1,right-1]  [right,r]qsort(nums,l,left);qsort(nums,right,r);//通过递归,我们能够将每个子数组进一步分割,直到它们只有一个元素为止,这时数组已经是有序的。}int getRandom(vector<int>&nums,int left,int right){int r=rand();return nums[r%(right-left+1)+left];}};

选择一个基准元素(pivot),将数组划分为两部分,使得左边部分的所有元素都小于等于基准元素,右边部分的所有元素都大于等于基准元素。

递归地对左右两部分子数组分别进行快速排序。

由于在分解过程中,元素已经被放置在正确的相对位置上,因此不需要额外的合并操作,最终整个数组就会被排序好。

函数内部首先选择一个基准元素,然后将数组划分为三个部分,接着递归地对左右两部分子数组进行排序

46.数组中的第K个最大元素

题目链接
给定整数数组 nums 和整数 k,请返回数组中第 **k** 个最大的元素。

请注意,你需要找的是数组排序后的第 k 个最大的元素,而不是第 k 个不同的元素。

你必须设计并实现时间复杂度为 O(n) 的算法解决此问题。

示例 1:

输入: [3,2,1,5,6,4], k = 2
输出: 5

示例 2:

输入: [3,2,3,1,2,4,5,5,6], k = 4
输出: 4

我们之前使用优先级队列进行问题解决

class Solution {public:int findKthLargest(vector<int>& nums, int k){//将数组中的元素先放入到优先级队列中,默认是大堆priority_queue<int> p(nums.begin(),nums.end());//我们删除k-1次,那么循环结束的时候的堆顶的数据就是当前最大了的,我们直接返回堆顶数据就行了while(--k)//--k是走k-1次,k--是走k次{p.pop();}return p.top();}};

这里我们将元素放到优先级队列中,默认是大堆,我们从数组的位置开始放,然后第k个最大的数字就在我们的堆顶了,然后我们循环进行删除堆顶数据,循环k-1次,最后得到的就是我们的堆顶的数据

但是这里的话我们使用分治的方法,基于快排而实现的选择算法

数组分三块+随机选择基准元素

如果我们的第k大落在了>key的区间上,那么我们左边的区间就不用去找了
image.png

class Solution {public:int findKthLargest(vector<int>& nums, int k){srand(time(NULL));//种一个随机数的种子return qsort(nums,0,nums.size()-1,k);//直接利用qsort返回最终的结果就行了}int qsort(vector<int>&nums,int l,int r,int k){if(l==r) return nums[l];//如果区间只有一个元素的话,那么我们直接返回nums[l]//1.随机选择一个基准元素int key=getRandom(nums,l,r);//2.根据基准元素将数组分成三块int left=l-1,right=r+1,i=l;while(i<right){if(nums[i]<key)swap(nums[++left],nums[i++]);else if(nums[i]==key)i++;else swap(nums[--right],nums[i]);}//3.分情况讨论,去哪个区间去寻找int c=r-right+1;//[right,r]这个区间的元素的个数int b=right-1-(left+1)+1;//[left+1,right-1]if(c>=k) return qsort(nums,right,r,k);//落在右边的区域上else if(b+c>=k)return key;//落在中间的这个区域上else return qsort(nums,l,left,k-b-c);}int getRandom(vector<int>&nums,int left,int right){return nums[rand()%(right-left)+left];}};
  • c = r - right + 1: 计算右区间 [right, r] 的元素个数。这个区间包含了所有比基准元素大的元素。
  • b = right - 1 - (left + 1) + 1: 计算中间区间 [left + 1, right - 1] 的元素个数。这个区间包含了所有等于基准元素的元素。

c >= k:

  • 说明第 k 个最大的元素位于右区间,因为右区间中有足够多的元素。如果右区间的大小大于或等于 k,说明第 k 个最大的元素在右区间,所以我们需要递归查找右区间。递归调用 qsort(nums, right, r, k) 来继续寻找。
    b + c >= k:

  • 说明第 k 个最大的元素位于中间区间。中间区间包含了所有与基准元素相等的元素。如果 b + c 大于或等于 k,那么第 k 个元素就是基准元素本身,因为它落在中间区间的某个位置。因此,直接返回 key(基准元素)。
    else:

  • 说明第 k 个最大的元素不在右区间,也不在中间区间,肯定位于左区间。此时,我们递归查找左区间,递归范围是 [l, left],并且 k 被调整为 k - b - c,因为我们已经跳过了右区间和中间区间中的元素。

通过这些条件判断,算法有效地缩小了搜索范围,确保每次递归都能迅速逼近目标位置,直到找到第 k 个最大的元素。

47.最小的k个数

题目链接 这个题的话可以不按照从小到大的顺序返回
输入整数数组 arr ,找出其中最小的 k 个数。例如,输入4、5、1、6、2、7、3、8这8个数字,则最小的4个数字是1、2、3、4。

  • 示例1:
    • 输入:arr = [3,2,1], k = 2
    • 输出:[1,2] 或者 [2,1]
  • 示例2:
    • 输入:arr = [0,1,2,1], k = 1
    • 输出:[0]

解法一:排序(调用容器) NlogN

解法二:利用堆 NlogK

解法三:快速选择算法O(N)

随机选择基准元素+数组分成三块
image.png

class Solution {
public:vector<int> getLeastNumbers_Solution(vector<int> nums, int k){srand(time(NULL));qsort(nums,0,nums.size()-1,k);//没有对整个数组进行排序,而是将前k个数丢到前面去return {nums.begin(),nums.begin()+k};//返回前k个数}void qsort(vector<int>&nums,int l,int r,int k){if(l>=r) return ;//先处理特殊的情况//1.随机选择一个基准元素+数组分三块int key=getRandom(nums,l,r);//2.数组分三块int left=l-1,right=r+1,i=l;while(i<right){if(nums[i]<k)swap(nums[++left],nums[i]);else if(nums[i]==k) i++;else swap(nums[--right],nums[i]);}//[l,left][left+1,right-1][right,r]//3.分情况讨论int a=left-l+1;int b =right-left+1;if(a>k) qsort(nums,l,left,k);else if(a+b>k)return ;else qsort(nums,right,r,k-a-b);}int getRandom(vector<int>&nums,int l,int r){return nums[rand()%(r-l+1)+l];}};

假设数组已经被分为三部分:

  • [l, left]:小于基准值的部分
  • [left+1, right-1]:等于基准值的部分
  • [right, r]:大于基准值的部分
    这里有三个主要的变量:
  • a = left - l + 1:表示小于基准值的元素数量。
  • b = right - left + 1:表示等于基准值的元素数量
    a > k
  • 说明前 k 个最小的元素都在小于基准值的部分 [l, left] 中,所以下一步只需要在左侧部分继续递归。
  • 调用 qsort(nums, l, left, k),只递归左侧部分,寻找最小的 k 个元素。
    a + b > k
  • a + b 是小于或等于基准值的元素总数。
  • 如果 a + b >= k,说明前 k 个最小的数已经在左侧部分或等于基准值的部分中找到了。
  • 在这种情况下,递归结束,不需要继续处理右侧部分,因为前 k 个数已经被找到了。
    else(即 a + b < k
  • 说明前 k 个最小的数不在小于基准值的部分,也不完全在等于基准值的部分。
  • 因此,接下来应该递归处理右侧部分 [right, r],并且需要继续寻找剩余的 k - a - b 个最小数(因为左侧和中间部分已经有了 a + b 个最小数)。

相关文章:

深度解析之算法之分治(快排)

44.颜色分类 题目链接 给定一个包含红色、白色和蓝色、共 n 个元素的数组 nums &#xff0c;原地 对它们进行排序&#xff0c;使得相同颜色的元素相邻&#xff0c;并按照红色、白色、蓝色顺序排列。 我们使用整数 0、 1 和 2 分别表示红色、白色和蓝色。 必须在不使用库内置…...

【金仓数据库征文】-金仓数据库性能调优 “快准稳” 攻略:实战优化,让数据处理飞起来

我的个人主页 我的专栏&#xff1a; 人工智能领域、java-数据结构、Javase、C语言&#xff0c;希望能帮助到大家&#xff01;&#xff01;&#xff01; 点赞&#x1f44d;收藏❤ 目录 一、KingbaseES金仓数据库简介二、快速入门&#xff1a;金仓数据库下载与安装指南三、“快”…...

DPIN河内AI+DePIN峰会:共绘蓝图,加速构建去中心化AI基础设施新生态

近日&#xff0c;一场聚焦前沿科技融合的盛会——AIDePIN峰会在越南河内成功举办。此次峰会由DPIN、QPIN及42DAO等Web3领域的创新项目联合组织&#xff0c;汇聚了众多Web3行业领袖、技术专家与社区成员。峰会于2025年4月19日举行&#xff0c;其核心议题围绕去中心化物理基础设施…...

vscode和git 踩坑

git init经常 在 vscode push错误问题: 正确姿势&#xff1a;先 GitHub 上建仓库 → git clone 拉到本地 → 再用 VSCode 打开编辑 ❌ 不是&#xff1a;VSCode 里 git init → 再去 GitHub 选个仓库绑定 举个对比 操作流程是否推荐后果GitHub 创建仓库 → git clone → 用 VSC…...

C++11介绍

目录 一、C11的两个小点 1.1、decltype 1.2、nullptr 二、列表初始化 2.1、C98传统的{} 2.2、C11中的{} 2.3、C11中的std::initializer_list 三、右值引用和移动语义 3.1、左值和右值 3.2、左值引用和右值引用 3.3、引用延长生命周期 3.4、左值和右值的参数匹配 3…...

AI数字人:繁荣背后的伦理困境与法律迷局(8/10)

摘要&#xff1a;本文深入剖析 AI 数字人从虚拟走向现实的历程&#xff0c;阐述其融合多技术实现从静态到动态交互的跨越&#xff0c;爆发式应用于各领域带来的商业价值与社会影响&#xff0c;同时直面由此引发的伦理法律挑战&#xff0c;包括身份认同、数据隐私、责任归属及权…...

SOLID 原则在单片机环境下的 C 语言实现示例,结合嵌入式开发常见场景进行详细说明

1. 单一职责原则 (SRP) 定义:一个模块(函数/文件)只负责一个功能。 示例:传感器数据采集与处理分离 // SensorAdc.h - 仅负责ADC原始数据采集 typedef struct { uint16_t (*ReadRaw)(void); // 原始数据读取接口 } SensorAdc; // SensorProcessor.h - 仅负责数据处理…...

RT Thread 发生异常时打印输出cpu寄存器信息和栈数据

打印输出发生hardfault时,当前栈十六进制数据和cpu寄存器信息 在发生 HardFault 时,打印当前栈的十六进制数据和 CPU 寄存器信息是非常重要的调试手段。以下是如何实现这一功能的具体步骤和示例代码。 1. 实现 HardFault 处理函数 我们需要在 HardFault 中捕获异常上下文,…...

SQL 函数进行左边自动补位fnPadLeft和FORMAT

目录 1.问题 2.解决 方式1 方式2 3.结果 1.问题 例如在SQL存储过程中&#xff0c;将1 或10 或 100 长度不足的时候&#xff0c;自动补足长度。 例如 1 → 001 10→ 010 100→100 2.解决 方式1 SELECT FORMAT (1, 000) AS FormattedNum; SELECT FORMAT(12, 000) AS Form…...

Unity中数据和资源加密(异或加密,AES加密,MD5加密)

在项目开发中,始终会涉及到的一个问题,就是信息安全,在调用接口,或者加载的资源,都会涉及安全问题,因此就出现了各种各样的加密方式。 常见的也是目前用的最广的加密方式,分别是:DES、3DES、AES、MD5、XOR(异或) 其中DES、3DES、AES、MD5用在数据加密中偏多,特别是…...

C++初窥门径

const关键字 一、const关键字 修饰成员变量 常成员变量&#xff1a;必须通过构造函数的初始化列表进行初始化&#xff0c;且初始化后不可修改。 示例&#xff1a; class Student { private: const int age; // 常成员变量 public: Student(string name, int age) : age(ag…...

Spring知识点总结

目录 1.什么是spring&#xff1f;你对spring的理解&#xff1f; 2.spring的优缺点&#xff1f; 3.解释一下IOC和AOP&#xff1f; 4.IOC和DI的区别&#xff1f; 5.spring中管理对象注入的方式&#xff1f; 6.自动注入的注解有哪些&#xff1f; 声明bean的注解 Bean的生命…...

Oracle_开启归档日志和重做日志

在Oracle中&#xff0c;类似于MySQL的binlog的机制是归档日志&#xff08;Archive Log&#xff09;和重做日志&#xff08;Redo Log&#xff09; 查询归档日志状态 SELECT log_mode FROM v$database; – 输出示例&#xff1a; – LOG_MODE – ARCHIVELOG (表示已开启) – NO…...

【金仓数据库征文】-数据库界新兴前列者,本篇带你速懂金仓数据库!

最近写课程设计、搞毕设是不是被数据库折腾到崩溃&#xff1f;动不动就报错、数据迁移还超麻烦&#xff01;今天挖到个宝藏 —— 国产金仓数据库 KingbaseES&#xff0c;操作超简单&#xff0c;还自带 “翻译器” 帮你迁移数据&#xff01;性能强还稳定&#xff0c;关键完全免费…...

人工智能与机器学习,谁是谁的子集 —— 再谈智能的边界与演进路径

人工智能&#xff08;Artificial Intelligence, AI&#xff09;作为当代最具影响力的前沿技术之一&#xff0c;常被大众简化为 “深度学习” 或 “大模型” 等标签。然而&#xff0c;这种简化认知往往掩盖了AI技术内部结构的复杂性与多样性。事实上&#xff0c;AI并非单一方法的…...

Linux进程学习【进程状态】

&#x1f33c;&#x1f33c;前言&#xff1a;在操作系统中&#xff0c;进程是最基本的资源管理单位&#xff0c;而操作系统通过精确管理这些进程的状态来确保系统能够高效运行。进程的状态不仅仅是操作系统设计的一部分&#xff0c;它对系统的性能、稳定性以及资源的分配起着至…...

用 ESP32 模拟 Wiegand 刷卡器:开发门禁系统必备的小工具

网罗开发 &#xff08;小红书、快手、视频号同名&#xff09; 大家好&#xff0c;我是 展菲&#xff0c;目前在上市企业从事人工智能项目研发管理工作&#xff0c;平时热衷于分享各种编程领域的软硬技能知识以及前沿技术&#xff0c;包括iOS、前端、Harmony OS、Java、Python等…...

什么是 MCP?与 AI Agent 的关系是什么?

首先先回答一下什么是MCP&#xff1f; 如果你经常使用像Claude这样的大语言模型&#xff0c;你可能已经注意到它们虽然强大&#xff0c;但有时候也有局限性&#xff0c;比如无法获取实时信息或访问特定工具。 模型上下文协议&#xff08;Model Context Protocol&#xff0c;简…...

Python ZIP文件操作全解析:从基础压缩到高级技巧

目录 一、ZIP文件操作基础三板斧 1.1 创建压缩包 1.2 解压操作 1.3 文件遍历与信息获取 二、进阶技巧&#xff1a;让压缩更智能 2.1 加密压缩实战 2.2 增量更新策略 2.3 性能优化技巧 三、高级场景解决方案 3.1 分卷压缩实现 3.2 跨平台路径处理 3.3 异常处理最佳实…...

Linux:进程的等待

当以一个进程结束时&#xff0c;它会变成僵尸进程&#xff0c;这个僵尸进程如果不处理&#xff0c;就会一直占用CPU资源&#xff0c;如果父进程要回收这个进程会通过进程等待的方式处理&#xff0c;回收子进程只会&#xff0c;会得到进程的退出信息 进程等待 父进程通过进程等…...

玉米产量遥感估产系统的开发实践(持续迭代与更新)

项目地址&#xff1a;项目首页 - maize_yield_estimation:玉米估产的flaskvue项目 - GitCode 开发中&#xff0c;敬请期待。。。 以下是预先写的提纲&#xff0c;准备慢慢补充 一、项目背景与工程目标 业务需求分析 农业遥感估产的行业痛点&#xff08;数据分散、模型精度不足…...

Python解析地址中省市区街道

Python解析地址中省市区街道 1、效果 输入&#xff1a;海珠区沙园街道西基村 输出&#xff1a; 2、导入库 pip install jionlp3、示例代码 import jionlp as jiotext 海珠区沙园街道西基村 res jio.parse_location(text, town_villageTrue) print(res)...

论文学习:《聚类矩阵正则化指导的层次图池化》

原文标题&#xff1a;Clustering matrix regularization guided hierarchical graph pooling 原文链接&#xff1a;https://www.sciencedirect.com/science/article/abs/pii/S0950705125001558 图池化技术大致可以分为两类&#xff1a;平面图池化和层次图池化。后者通过迭代粗化…...

【金仓数据库征文】- 国产化迁移实战:从Oracle到KingbaseES的平滑过渡

文章目录 引言&#xff1a;国产数据库的崛起与迁移需求一、兼容性架构设计与配置优化1.1 Oracle兼容模式的核心实现1.2 潜在语法差异的深度处理1.3 环境预配置关键技术1.3.1 用户与模式映射1.3.2 字符集与日期格式 1.4 深度兼容模式配置1.4.1 语法兼容开关1.4.2 数据类型映射策…...

「零配置陷阱」:现代全栈工具链的复杂度管控实践

一、工具链膨胀的「死亡螺旋」 2024年典型全栈项目的初始化噩梦&#xff1a; $ npm create vitelatest ✔ Project name: … demo ✔ Select a framework: › React ✔ Select a variant: › TypeScript SWC ✔ Install shadcn/ui? … Yes ✔ Add Storybook? … Yes ✔ Co…...

浅析锁的应用与场景

锁的应用与场景&#xff1a;从单机到分布式 摘要&#xff1a;在多线程和分布式系统中&#xff0c;“锁”是避免资源竞争、保障数据一致性的核心机制。但你真的了解锁吗&#xff1f;什么时候该用锁&#xff1f;用哪种锁&#xff1f;本文通过通俗的比喻和代码示例&#xff0c;带…...

图论---Kruskal(稀疏图)

O( m * log n )。 1&#xff0c;将所有边按权重从小到大排序&#xff0c;调用系统的sort() 2&#xff0c;枚举每条边的 a , b ,权重 if(a、b 不联通) 就将这条边加入集合中 // 最小生成树 —Kruskal算法(稀疏图) #include<iostream> #include<algorithm> using …...

MySQL 从入门到精通:第二篇 - 数据类型、约束与索引

1. MySQL数据类型详解 数值类型 整数类型 -- 常用整数类型及范围 CREATE TABLE integer_types (tiny_col TINYINT, -- 1字节,有符号(-128~127),无符号(0~255)small_col SMALLINT, -- 2字节,有符号(-32768~32767),无符号(0~65535)medium_col MEDIUMINT,...

基于AI技术的高速公路交通引流系统设计与应用研究

基于AI技术的高速公路交通引流系统设计与应用研究 1. 研究背景与意义 1.1 交通系统演化脉络 1.1.1 发展阶段划分 机械化时代&#xff08;1950-1990&#xff09;&#xff1a;固定式信号控制信息化时代&#xff08;1991-2010&#xff09;&#xff1a;SCATS/SCOOT系统智能化时代…...

n8n 中文系列教程_09. 从原始需求到精准实现:n8n节点选择指南

在自动化工作流工具n8n中&#xff0c;正确选择和使用节点是高效实现需求的关键。本文将从需求分析入手&#xff0c;逐步解析触发节点与执行节点的区别&#xff0c;梳理n8n的节点分类逻辑&#xff0c;并揭示外部服务节点的本质&#xff0c;帮助您精准匹配需求与实现方案。无论您…...

P19:Inception v1算法实战与解析

&#x1f368; 本文为&#x1f517;365天深度学习训练营 中的学习记录博客&#x1f356; 原作者&#xff1a;K同学啊 一、模型结构 Inception V1 的主要特点是在一个网络中同时使用不同大小的卷积核&#xff08;1x1、3x3、5x5&#xff09;和池化操作来提取多尺度特征。以下是…...

day32 学习笔记

文章目录 前言一、霍夫变换二、标准霍夫变换三、统计概率霍夫变换四、霍夫圆变换 前言 通过今天的学习&#xff0c;我掌握了霍夫变换的基本原本原理及其在OpenCV中的应用方法 一、霍夫变换 霍夫变换是图像处理中的常用技术&#xff0c;主要用于检测图像中的直线&#xff0c;圆…...

2025时间序列都有哪些创新点可做——总结篇

作为AI和数据科学的核心方向之一&#xff0c;时间序列在2025年依然保持着强劲的发展势头&#xff0c;稳站各大顶会顶刊投稿主题前列。 关于它的研究&#xff0c;目前在结合传统统计方法和深度学习的基础上&#xff0c;已延伸至频域等数理工具与神经网络的交叉创新。同时针对垂…...

头歌实训之索引

&#x1f31f; 各位看官好&#xff0c;我是maomi_9526&#xff01; &#x1f30d; 种一棵树最好是十年前&#xff0c;其次是现在&#xff01; &#x1f680; 今天来学习C语言的相关知识。 &#x1f44d; 如果觉得这篇文章有帮助&#xff0c;欢迎您一键三连&#xff0c;分享给更…...

通讯的基础概念:涵盖串行通信、并行通信、TCP、UDP、Socket 等关键概念和技术

一、通信基础概念 1. 串行通信与并行通信 串行通信 定义&#xff1a;通过一条线路逐位传输数据&#xff0c;每个字节包含起始位、数据位、校验位和停止位。特点&#xff1a; 传输稳定&#xff0c;但速度较慢&#xff08;因逐位传输&#xff09;。常用接口&#xff1a;RS-232、…...

Uni-App 多端电子合同开源项目介绍

项目概述 本项目是一款基于 uni-app框架开发的多端电子合同管理平台&#xff0c;旨在为企业及个人用户提供高效、安全、便捷的电子合同签署与管理服务。项目创新性地引入了 “证据链”与“非证据链”两种签署模式&#xff0c;满足不同场景下的签署需求&#xff0c;支持多种签署…...

一个非常快速的 Latex 入门教程【Part 1】

目录 1.LaTex简介 2.LaTex 中最基础的格式化命令 2.1加粗&#xff0c;斜体&#xff0c;下划线&#xff0c;添加新段落 2.2文档分节 2.3 图片 2.4 LaTeX 中列表的创建 无序列表 有序列表 2.5对数学公式的排版 2.6表格 1.LaTex简介 LaTex的主要优势是它会将文…...

用Obsidian四个插件打造小说故事关联管理系统:从模板到图谱的全流程实践

用Obsidian四个插件打造小说故事关联管理系统&#xff1a;从模板到图谱的全流程实践 一、前言&#xff1a;为什么需要故事关联管理系统 在小说创作中&#xff0c;复杂的人物关系、交错的情节线和多维的世界观常导致创作混乱。本文将通过 Dataview&#xff08;数据查询&#xf…...

C++ 日志系统实战第三步:熟悉掌握各种设计模式

全是通俗易懂的讲解&#xff0c;如果你本节之前的知识都掌握清楚&#xff0c;那就速速来看我的项目笔记吧~ 相关技术知识补充&#xff0c;也是最后的补充知识了~ 下文将加入项目代码编写&#xff01; 目录 设计模式 单例模式 饿汉模式 懒汉模式 工厂模式 简单…...

[ESP-IDF]:esp32-camera 使用指南 ESP32S3-OV2640 用例测试

【核知坊】&#xff1a;释放青春想象&#xff0c;码动全新视野。 我们希望使用精简的信息传达知识的骨架&#xff0c;启发创造者开启创造之路&#xff01;&#xff01;&#xff01; 内容摘要&#xff1a;esp32-camera 组件为 ESP32 系列 SoC 提供了兼容的图…...

在统信UOS/麒麟Kylin OS中创建网页桌面快捷方式

在统信UOS/麒麟Kylin OS中创建网页桌面快捷方式 本文将详细介绍如何在统信UOS或麒麟KYLINOS中使用命令行创建一个网页桌面快捷方式&#xff0c;以方便构建云桌面模板及镜像模板。欢迎大家浏览、分享和转发&#xff01;请关注我以获取更多技术分享。 1. 查看系统信息 首先&am…...

SQLite 是什么?

&#x1f4cc; 一、SQLite 是什么&#xff1f; SQLite 是一个轻量级、嵌入式数据库&#xff0c;意思是它直接集成在你的 App 内部&#xff0c;不需要单独安装数据库服务端。 ✅ 特点&#xff1a; 特点说明本地使用所有数据保存在手机内部存储文件形式数据以 .db 文件形式存储…...

恒创科技「香港大带宽云」新老用户专享实例及热门配置

全球化数字浪潮下&#xff0c;高带宽应用正深度重构各行业运营模式——从跨境电商、流媒体与视频点播&#xff0c;到在线游戏与云游戏加速&#xff0c;涵盖所有高并发、强交互的业务场景。在此背景下&#xff0c;企业对高性能 IT 基础架构的需求持续升级&#xff0c;以此来支持…...

fpga系列 HDL:verilog latch在fpga中的作用 避免latch的常见做法

目录 Latch在FPGA中的作用Quartus中有关latch的警告⚠避免Latch的常见做法1. if-else 语句未覆盖所有条件生成Latch的代码&#xff1a;修复后的代码&#xff1a; 2. case语句未覆盖所有分支生成Latch的代码&#xff1a;修复后的代码&#xff1a; 3. 组合逻辑中缺少默认赋值生成…...

java配置

环境变量...

解决虚拟主机ping不通本地主机问题

win11 1 问题 虚拟主机和本地主机在同一网段。 2 解决方案 以win11为例&#xff1a; 设置 -> 网络和 Internet -> 高级网路设置 -> Windows 防火墙 -> 高级设置 -> 入站规则 -> 新建规则 需要设置&#xff1a;规则类型、 协议和端口、名称&#xff0c;其…...

Move Registry 发布,实现 Sui 的超级互操作性

Move Registry&#xff08;MVR&#xff09;的到来对 Sui 来说是一件大事。MVR 是一个功能齐全的链上包管理系统&#xff0c;提升了整个生态的可发现性、可信度和互操作性。Sui 本身就是最具互操作性的链之一&#xff0c;凭借 Move 语言和可编程交易区块&#xff08;PTBs&#x…...

【Linux】gdb工具,Linux 下程序调试的 “透视眼”

目录 调试代码调试注意事项gdb和Cgdb调试命令汇总行号显示断点设置查看断点信息删除断点开启 / 禁用断点运行 / 调试逐过程和逐语句打印 / 追踪变量指定行号跳转强制执行函数 补充命令watchset var 替换变量值条件断点 end 调试代码 这是本次调试要用的代码 1 #include <st…...

脚本分享:快速作图对比wannier拟合能带python脚本

本脚本通过Python实现电子能带结构数据的快速作图&#xff0c;能够从两个不同的数据文件&#xff08;BAND.dat 和 wannier90_band.dat&#xff09;中提取有效数据&#xff0c;并在同一坐标系下绘制对比图。 准备工作&#xff1a;使用VASPKIT处理获得能带数据BAND.dat&#xff…...

解决ssh拉取服务器数据,要多次输入密码的问题

问题在于&#xff0c;每次循环调用 rsync 都是新开一个连接&#xff0c;所以每次都需要输入一次密码。为了只输入一次密码&#xff0c;有以下几种方式可以解决&#xff1a; ✅ 推荐方案&#xff1a;设置 SSH 免密登录 最稳最安全的方式是&#xff1a;配置 SSH 免密登录&#x…...