数组滑动窗口单调栈单调队列trick集【leetcode hot100 c++速查!!!】
文章目录
- 栈
- 经典模版题-括号
- 最小栈
- 字符串解码
- 每日温度
- 柱状图的最大矩形
- 堆
- 数组中的第k个最大元素
- 前k个高频元素
- 数据流中的中位数
- 数组
- 最大子数组和
- 合并区间
- 轮转数组
- 除自身以外数组的乘积
我们尝试将这三类问题放在一个专题中进行讨论,是因为它们有很多公共的部分。
- 它们其实都是在处理窗口内的问题
- 讲到窗口,就难免涉及到窗口的伸缩问题,常见的伸缩方式有:
- 窗口两端往同一个方向移动(但移动速度可能不同,窗口大小也是动态变化的)。
- 窗口两端往两个相反方向扩展(体现为窗口总是在变大)。
- 窗口中只有一端在扩展
- 滑动窗口相关的问题,一般是考虑窗口内的所有元素
- 单调栈&队列,一般是考虑窗口内的子序列,这个子序列具有单调性(递增/递减)
- 单调栈&队列,其实恰好对应窗口的伸缩方向
栈
经典模版题-括号
20. 有效的括号 - 力扣(LeetCode)
class Solution {
public:stack<char> stk;//使用hash表unordered_map<char,char> hash={{'(', ')'},{'[', ']'}, {'{', '}'}};bool isValid(string s) {for(auto c:s){if(!stk.empty()&&hash[stk.top()]==c) stk.pop();else stk.push(c);}return stk.empty();}
};
最小栈
155. 最小栈 - 力扣(LeetCode)
设计一个支持 push
,pop
,top
操作,并能在常数时间内检索到最小元素的栈。
class MinStack {
public:stack<int> a,b;MinStack() { }void push(int val) {a.push(val);//b始终是栈a中的最小元素if(b.empty()) b.push(val);else b.push(min(b.top(),val));}void pop() {a.pop();b.pop();}int top() {return a.top();}int getMin() {return b.top();}
};
字符串解码
394. 字符串解码 - 力扣(LeetCode)
以下用a2[b]举例子:
- 当遇到’[‘,把’[‘和与之匹配的’]‘之间的字母需要重复的次数和’['之前的字符进栈,本例中进栈{2,a}
- 当遇到’]',代码中的字符串res即:b,就是要重复的字母,此时出栈之前进栈的{2,a},res变成a+2*b = abb
class Solution {
public:string decodeString(string s) {//单栈实现vector<pair<int,string>> st;string res="";int repeat=0;for(char c:s){//两位及以上需要连乘if(isdigit(c)) repeat=repeat*10+c-'0';else if(c=='['){//入栈st.push_back({repeat,res});repeat=0,res="";//重新计算}else if(c==']'){//取栈顶元素auto [reSub,strSub]=st.back();//弹出栈顶元素st.pop_back();//重复添加res多次到subStr中while(reSub--) strSub+=res;res=strSub;}//字母则保存在res中else res+=c;}return res;}
};
每日温度
739. 每日温度 - 力扣(LeetCode)
即找右侧第一个比自己大的数:维护后缀窗口递增
class Solution {
public:vector<int> dailyTemperatures(vector<int>& temperatures) {int n=temperatures.size();stack<int> stk;//记录下标值vector<int> res(n,0);//维护后缀窗口递增序列for(int i=n-1;i>=0;i--){//弹出单调栈中比自己小的元素while(!stk.empty()&&temperatures[i]>=temperatures[stk.top()]) stk.pop();if(!stk.empty()) res[i]=stk.top()-i;//当前元素入栈stk.push(i) ;}return res;}
};
柱状图的最大矩形
84. 柱状图中最大的矩形 - 力扣(LeetCode)
class Solution {
public:int largestRectangleArea(vector<int>& heights) {int n=heights.size();//用于保存最大宽度vector<int> w(n,1);stack<int> stk;//左侧可扩展的最大宽度for(int i=0;i<n;i++){//维护前缀窗口递减[右向左]while(!stk.empty()&&heights[stk.top()]>=heights[i]) stk.pop();if(stk.empty()) w[i]+=i;//左边没有比其矮的柱子,从i=0开始扩展//不包括stk.top()这个元素else w[i]+=i-stk.top()-1;stk.push(i);}int res=0;//栈清空while(!stk.empty()) stk.pop();//右侧可扩展的最大宽度for(int i=n-1;i>=0;i--){//维护后缀窗口递减while(!stk.empty()&&heights[stk.top()]>=heights[i]) stk.pop();if(stk.empty()) w[i]+=n-i-1;else w[i]+=stk.top()-i-1;stk.push(i);res=max(res,heights[i]*w[i]);}return res;}
};
堆
数组中的第k个最大元素
215. 数组中的第K个最大元素 - 力扣(LeetCode)
小根堆维护堆顶为k个元素的最小值,每个元素进行判断,更大的进堆,最终队顶为k个最大数的最小值。
class Solution {
public:int findKthLargest(vector<int>& nums, int k) {//定义元素类型 容器类型 比较器(默认大根堆less<int>)priority_queue<int ,vector<int>, greater<int>> pq;for(int curr:nums){//小根堆维护堆顶为k个元素的最小值if(pq.size()<k) pq.push(curr);else{//如果curr比根堆元素大 则有可能是第k大元素 否则不可能if(pq.top()<curr) {pq.pop();pq.push(curr);}}}return pq.top();}
};
前k个高频元素
347. 前 K 个高频元素 - 力扣(LeetCode)
计算频率作为数组元素再进行排序
class Solution {
public:vector<int> topKFrequent(vector<int>& nums, int k) {unordered_map<int,int> freq;//map存放各元素出现频率for(int x:nums) freq[x]+=1;priority_queue<pair<int,int>> pq;for(auto& p :freq)//将频率放在前面方便排序pq.push({p.second,p.first});//此时pq为根据频率排序的大根堆vector<int> res(k);//取大根堆的前k个元素即可for(int i=0;i<k;i++) {res[i]=pq.top().second;pq.pop();}return res;}
};
数据流中的中位数
295. 数据流的中位数 - 力扣(LeetCode)
MedianFinder()
初始化MedianFinder
对象。void addNum(int num)
将数据流中的整数num
添加到数据结构中。double findMedian()
返回到目前为止所有元素的中位数。与实际答案相差10-5
以内的答案将被接受。
class MedianFinder {
public://小根堆保存较大的一半 N/2或N+1/2priority_queue<int,vector<int>,greater<int>> sq;priority_queue<int,vector<int>,less<int>> bq;MedianFinder() { }void addNum(int num) {//奇数 需要向bq中添加一个元素if(sq.size()!=bq.size()){//不能确定sum是否应该在bq中 需先加入sq 找到sq的最小元素sq.push(num);//将sq的top最小元素插入bqbq.push(sq.top());sq.pop();}else {//偶数 需要向sq中添加一个元素bq.push(num);sq.push(bq.top());bq.pop();}}double findMedian() {//奇数返回sq.top() 偶数返回两个top的均值return sq.size()!=bq.size()?sq.top():(sq.top()+bq.top())/2.0;}
};
数组
最大子数组和
53. 最大子数组和 - 力扣(LeetCode)
某个数使得前缀和为负数则起始点在该位置之后!
class Solution {
public:int maxSubArray(vector<int>& nums) {long long sum=0;int n=nums.size();long long res=-1e5;for(int i=0;i<n;i++){//维护前缀和sum+=nums[i];res=max(res,sum);//如果遍历到当前位使得sum由正变负 则改变起始位置在该位之后if(sum<=0) sum=0;}return res;}
};
合并区间
56. 合并区间 - 力扣(LeetCode)
请你合并所有重叠的区间,并返回 一个不重叠的区间数组,该数组需恰好覆盖输入中的所有区间 。
按左端点进行排序,之后不断比对下一个左端点是否和上一个右端点有重叠。
class Solution {
public:vector<vector<int>> merge(vector<vector<int>>& intervals) {//按左边界进行从小到大排序sort(intervals.begin(),intervals.end());vector<vector<int>> res;//记录当前左右端点int l=intervals[0][0],r=intervals[0][1];//从第二个区间开始遍历for(int i=1;i<intervals.size();i++){//如果该区间左端点比r大 则前一区间需合并 重新开启l和rif(intervals[i][0]>r){res.push_back({l,r});l=intervals[i][0];r=intervals[i][1];}//扩充右端点relse r=max(r,intervals[i][1]);}//只有满足条件才会push结果 最后一个区间也需要pushres.push_back({l,r});return res;}
};
轮转数组
189. 轮转数组 - 力扣(LeetCode)
- 翻转整个数组
[0,k-1]
翻转[k,n-1]
翻转
class Solution {
public:void rotate(vector<int>& nums, int k) {k%=nums.size();//先翻转整个数组reverse(nums,0,nums.size()-1);//[0,k-1]翻转reverse(nums,0,k-1);//[k,n-1]翻转reverse(nums,k,nums.size()-1);}void reverse(vector<int>& nums,int st,int ed){while(st<ed){swap(nums[st],nums[ed]);st+=1;ed-=1;}}
};
除自身以外数组的乘积
238. 除自身以外数组的乘积 - 力扣(LeetCode)
请 **不要使用除法,**且在 O(n)
时间复杂度内完成此题。
class Solution {
public:vector<int> productExceptSelf(vector<int>& nums) {int n=nums.size();vector<int> res(n,1);int pre=1;for(int i=0;i<n;i++){res[i]*=pre;//当前元素左边所有元素的乘积pre*=nums[i];}pre=1;for(int i=n-1;i>=0;i--){res[i]*=pre;//存储的是当前元素右边的所有元素的乘积//*=也保存了原来左边的乘积pre*=nums[i];}return res;}
};
相关文章:
数组滑动窗口单调栈单调队列trick集【leetcode hot100 c++速查!!!】
文章目录 栈经典模版题-括号最小栈字符串解码每日温度柱状图的最大矩形 堆数组中的第k个最大元素前k个高频元素数据流中的中位数 数组最大子数组和合并区间轮转数组除自身以外数组的乘积 我们尝试将这三类问题放在一个专题中进行讨论,是因为它们有很多公共的部分。 …...
半监督学习与强化学习的结合:新兴的智能训练模式
📌 友情提示: 本文内容由银河易创AI(https://ai.eaigx.com)创作平台的gpt-4o-mini模型生成,旨在提供技术参考与灵感启发。文中观点或代码示例需结合实际情况验证,建议读者通过官方文档或实践进一步确认其准…...
C++ 可调用实体 (详解 一站式)
目录 可调用实体 函数对象 函数指针 成员函数指针 空指针的使用(了解) 可调用实体 讲到调用这个词,我们首先能够想到普通函数和函数指针,在学习了类与对象的基础知识后,还增加了成员函数,那么它们都被…...
架构师与高级工程师:职业差异与进阶之路
“学而不思则罔,思而不学则殆。”——孔子 解释:该名言强调了学习和思考的结合,对应文章中工程师若想晋升为架构师,不能仅满足于对工具的学习,还要深入探究事物本质,培养深度思考能力,体现了思…...
声纹监测技术在新能源汽车的应用场景解析
新能源汽车声纹监测技术可应用于多个场景,以下是详细解析: 故障诊断 电机系统故障检测:新能源汽车的电机在运行过程中会发出特定的声音。通过声纹监测技术,采集电机运行时的声音信号并进行分析,能够及时发现电机轴承磨…...
About why docker application mode taskmanager not down in time
Tips: docker flink application mode 当任务完成或者jobmanager cancel,则taskmanager会因为flink集群机制继续保留监听等待jobmanager发送任务命令,当超过大约6 mins,taskmanager便会自动exited退出。...
2025-4-27-C++ 学习 数组(2)
数组 2025-4-27-C 学习 数组(2)P2550 [AHOI2001] 彩票摇奖题目描述输入格式输出格式输入输出样例 #1输入 #1输出 #1 说明/提示题解代码 P2615 [NOIP 2015 提高组] 神奇的幻方题目背景题目描述输入格式输出格式输入输出样例 #1输入 #1输出 #1 输入输出样例…...
timerfd定时器时间轮定时器
目录 一、timerfd定时器 二、timerfd定时器代码演示 三、时间轮定时器 一、timerfd定时器 timerfd是一种通过文件描述符管理定时器的机制 #include <sys/timerfd.h> int timerfd_create(int clockid, int flags); 作用:创建定时器的文件描述符 返回值&…...
什么是数据中心代理IP?有哪些用途?
在海外代理IP的选择中,数据中心代理IP是一个热门选项。这些代理服务器为用户分配了非ISP(互联网服务提供商)提供的IP地址,而是由第三方云服务提供商所提供的,通常位于数据中心内的服务器上,由托管和云公司所…...
机器学习分类模型性能评估:应对类别不平衡的策略与指标
在机器学习的世界里,模型们就像一群努力破案的侦探,而数据就是它们的“犯罪现场”。今天,咱们的主角——一个自命不凡的分类模型,接到了一个看似简单的任务:揪出那些患有罕见疾病的患者。这听起来是不是很容易…...
论文导读 - 基于边缘计算、集成学习与传感器集群的便携式电子鼻系统
基于边缘计算、集成学习与传感器集群的便携式电子鼻系统 原论文地址:https://www.sciencedirect.com/science/article/abs/pii/S0925400522015684 引用此论文(GB/T 7714-2015): WANG T, WU Y, ZHANG Y, et al. Portable electr…...
Molex莫仕连接器:增强高级驾驶辅助系统,打造更安全的汽车
随着对先进、高耗电量的系统的需求日益增长,电气化进程不断加速,汽车行业正处于一个十字路口。现代汽车面临着关键挑战,即满足不断增长的电力需求,特别是高级驾驶辅助系统(ADAS)等关键技术的需求。 由于现今的汽车比以往需要更多的…...
[密码学实战]SDF之密钥管理类函数(二)
[密码学实战]SDF之密钥管理类函数(二) 一、标准解读:GM/T 0018-2023核心要求 1.1 SDF接口定位 安全边界:硬件密码设备与应用系统间的标准交互层 功能范畴: #mermaid-svg-af5D1B1iHx3K8vSU {font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16…...
多实例情况下,实例名较长dbca失败
dbca创建数据库,但是失败,提示ORA-01158 看来千锤百炼的dbca脚本还是菜,直觉上讲不应该mount上,看一下Action 本地已存在多个实例且名称前缀类似,下一步应该分析dbca日志和实例的alert.log 改为 一个简短的实例名就…...
模电——PN结
一、铺垫 这篇文章将会吊打一切、只会从电子、电场力的角度来阐述PN结为啥会形成、和变薄、变厚;不再考虑空穴这种东西;——提出空穴的人,真不是东西 我敢打赌,全网,我的说法不一定对,但是绝对是唯一可以…...
c++11 : 特殊类设计
目录 一 设计一个类:只能在堆上创建对象 二 设计一个类:只能在栈上创建对象 三 设计一个类:不能被拷贝 四 设计一个类:不能被继承 五 设计一个类: 只能创建一个对象(单例模式) 六 饿汉和懒汉模式的对比 一 设计一个类…...
算法笔记.kruskal算法求最小生成树
题目:(来源:AcWing) 给定一个 n 个点 m 条边的无向图,图中可能存在重边和自环,边权可能为负数。 求最小生成树的树边权重之和,如果最小生成树不存在则输出 impossible。 给定一张边带权的无向…...
量子算法调试:Grover算法搜索空间压缩过程可视化方案
一、Grover算法核心原理回顾 Grover算法通过以下两步迭代实现搜索空间压缩: Oracle操作(相位翻转) 标记目标状态: Uω∣x⟩={−∣x⟩x=ω∣x⟩x≠ωUω∣x⟩={−∣x⟩∣x⟩x=ωx=ω 扩散操作(振幅放大) 执行反转平均操作: D=2∣s⟩⟨s∣−ID=2∣s⟩⟨s∣−I 其…...
零基础搭建AI作曲工具:基于Magenta/TensorFlow的交互式音乐生成系统
引言:当AI遇见莫扎特 “音乐是流动的建筑”,当人工智能开始理解音符间的数学规律,音乐创作正经历着前所未有的范式变革。本文将手把手教你构建一套智能作曲系统,不仅能够生成古典钢琴小品,还能实现巴洛克与爵士风格的…...
springboot项目文件上传到服务器本机,返回访问地址
文件上传到服务器本机,然后给出访问地址: 具体如下: 1、添加必要的工具类依赖 <!-- 文件上传工具类 --><dependency><groupId>commons-fileupload</groupId><artifactId>commons-fileupload</artifactId>…...
mysql community 8.0.23升级到8.0.42再到8.4.5
近日生产服务器准备正式试运行,数据进入客户的专有网络,于是甲方派了人过来测漏洞,结果扫出一大堆。其间关于mysql的漏洞300多个,吓死人。给出的补丁地址,打开来看,全部是英文,可能是一些什么测…...
ubuntu安装docker,conda,tmux,btop,nvitop
在 Ubuntu 上安装 Docker Engine (使用华为云源) 1. 更新系统软件包 sudo apt update sudo apt upgrade -y2. 安装必要的依赖包 sudo apt install -y \ca-certificates \curl \gnupg \lsb-release \git \vim \wget3. 添加 Docker 的 GPG 密钥 (来自华为云镜像) # 创建用于存…...
大模型在肝硬化腹水风险预测及临床方案制定中的应用研究
目录 一、引言 1.1 研究背景与意义 1.2 研究目的与创新点 1.3 研究方法与数据来源 二、肝硬化及大模型相关理论基础 2.1 肝硬化概述 2.2 大模型技术原理 2.3 大模型在医疗领域的应用现状 三、大模型预测肝硬化腹水术前风险 3.1 术前风险因素分析 3.2 大模型预测术前…...
孙宇晨将出席迪拜Token2049 与特朗普次子共话加密未来
据官方消息,波场TRON创始人孙宇晨将出席5月1日在迪拜举办的Token2049峰会上,并与特朗普次子埃里克特朗普(Eric Trump)进行一场备受瞩目的炉边对话,出席对话的人士还包括特朗普家族支持的去中心化金融项目WLFI(World Liberty Financial)的联合创始人Zach Witkoff。这场对话不仅彰…...
深入理解同源策略与跨域资源共享(CORS)
深入理解同源策略与跨域资源共享(CORS) 前言 在当今的 Web 开发中,跨域资源请求已成为常见需求。然而,浏览器的同源策略(Same-Origin Policy)作为最基础的安全机制,限制了不同源之间的资源交互…...
Vue 生命周期钩子总结
Vue 生命周期钩子总结 Vue 组件的生命周期钩子允许在组件不同阶段执行自定义逻辑。以下是各阶段的钩子函数及其用途、触发时机和注意事项: 1. 生命周期阶段概览 Vue 组件的生命周期分为四个主要阶段: 创建(Creation)࿱…...
【解决方案】Linux解决CUDA安装过程中GCC版本不兼容
Linux解决CUDA安装过程中GCC版本不兼容 目录 问题描述 解决方法 安装后配置 问题描述 Linux环境下安装 CUDA 时,运行sudo sh cuda_10.2.89_440.33.01_linux.run命令出现 “Failed to verify gcc version.” 的报错,提示 GCC 版本不兼容,查…...
网络准入控制系统推荐:2025年构建企业网络安全的第一道防线
随着信息技术的飞速发展,企业网络环境日益复杂,阳途网络准入控制系统作为一种先进的网络安全解决方案,其核心是确保网络接入的安全性。 一、网络准入控制系统的基本原理与功能 网络准入控制以“只有合法的用户、安全的终端才可以接入网络”为…...
AI Agent
李宏毅:从零开始搞懂 AI Agent - 知乎台大李宏毅2025 AI Agent新课来了! - 知乎读懂AI Agent:基于大模型的人工智能代理 - 知乎 1.什么是AI Agent 一个基于大模型的 AI Agent 系统可以拆分为大模型、规划、记忆与工具使用四个组 件部分。AI A…...
大模型如何应对内容安全:原理、挑战与技术路径探讨
随着大语言模型(LLM)技术的广泛应用,从AI写作助手到智能客服、再到生成式内容平台(AIGC),AI 正以前所未有的速度深入人类社会的各个角落。然而,随之而来的内容安全问题也日益凸显:模…...
Flinkcdc 实现 MySQL 写入 Doris
Flinkcdc 实现 MySQL 写入 Doris Flinkcdc 实现 MySQL 写入 Doris 一、环境配置 Doris:3.0.4 JDK 17 MySQL (业务数据库):5.7 MySQL(本地数据库):5.7 Flink:flink-1.19.1 flinkc…...
vim粘贴代码格式错乱 排版错乱 缩进错乱 解决方案
从IDE复制代码, 粘贴到vim打开的文件 出现以下格式错乱解决方案 在使用 Vim 编辑器粘贴代码时,出现格式错乱的问题,通常是因为 Vim 的自动缩进功能与粘贴的代码发生了冲突。Vim 默认会尝试对输入的内容进行自动缩进,这会导致粘贴的代码被错误…...
发那科机器人(基本操作、坐标系、I/O通信)
发那科机器人(基本操作、坐标系、I/O通信) 一,机器人基本操作1,坐标系种类2,机器人手动操作一关节运动3,机器人手动操作一直角运动二,坐标系建立1,工具坐标系建立原理及验证方法2,工具坐标系建立步骤3,用户坐标系建立原理及验证方法4,用户坐标系建立步骤三,I/O通信…...
GPU 架构入门笔记
引文位置:https://www.trainy.ai/blog/gpu-utilization-misleading 相关概念是通过 ChatGPT 迅速学习总结而成。 概念: GPU H100 GPU, with 144 SMs 每个 SM(streaming multiprocessors) 的架构: GPU Utilizati…...
centos7使用yum快速安装Docker环境
一、基础环境设置 1:关闭防火墙和内核安全机制 [rootlocalhost ~]# systemctl stop firewalld [rootlocalhost ~]# setenforce 02:配置网络yum源 [rootlocalhost ~]# curl -o /etc/yum.repos.d/CentOS-Base.repo http://mirrors.aliyun.com/repo/Cento…...
解密面试高频题:加权轮询负载均衡算法 (Java 实现)
在分布式系统设计和面试中,负载均衡是一个绕不开的话题。而加权轮询(Weighted Round Robin, WRR)作为一种经典且实用的负载均衡策略,经常出现在笔试题和面试环节中。本文将带你深入理解 WRR 算法的原理,并探讨几种常见…...
Linux中的系统延时任务和定时任务与时间同步服务和构建时间同步服务器
延时任务 在系统中我们的维护工作大多数时在服务器行对闲置时进行 我们需要用延迟任务来解决自动进行的一次性的维护 延迟任务时一次性的,不会重复执行 当延迟任务产生输出后,这些输出会以邮件的形式发送给延迟任务发起者 在RHEL9中默认系统中的所有普通…...
高效运维,智慧监测:COMEM光纤温度测量系统在电力行业中的应用
在电力行业中,变压器的稳定运行对于整个电网的安全很重要。为了确保变压器的健康状态,实时、精确的温度监测成为了不可或缺的一环。COMEM光纤温度测量系统应运而生,为变压器的温度监测提供了创新的解决方案。 变压器温度监测的重要性 变压器在…...
TP5兼容达梦国产数据库
1.首先数据库安装,部署时需配置大小写不敏感 2.安装PHP达梦扩展,一定要是对应版本(兼容操作系统)的扩展,否则会出现各种报错。参考官方文档:https://eco.dameng.com/document/dm/zh-cn/app-dev/php_php_new…...
[leetcode]2302.统计得分小于k的子数组
1.题目 2.事例 3.数据规模 4.思路(滑动窗口) 4.1滑动窗口的定义 滑动窗口是一种在数组、字符串等序列数据结构上进行操作的算法技巧。以下是其定义及相关要素的详细介绍: 定义:滑动窗口可以理解为在一个序列上,用一…...
Linux网络编程:TCP多进程/多线程并发服务器详解
Linux网络编程:TCP多进程/多线程并发服务器详解 TCP并发服务器概述 在Linux网络编程中,TCP服务器主要有三种并发模型: 多进程模型:为每个客户端连接创建新进程多线程模型:为每个客户端连接创建新线程I/O多路复用&am…...
Nacos源码—1.Nacos服务注册发现分析二
大纲 1.客户端如何发起服务注册 发送服务心跳 2.服务端如何处理客户端的服务注册请求 3.注册服务—如何实现高并发支撑上百万服务注册 4.内存注册表—如何处理注册表的高并发读写冲突 2.服务端如何处理客户端的服务注册请求 (1)客户端自动发送服务注册请求梳理 (2)Nacos…...
设备指纹护航电商和金融反欺诈体系建设
众所周知,人的指纹具有唯一性,可以作为人的身份识别标识。对于设备而言,也有可以用于识别的特征。设备指纹是指可以用于唯一标识出某一设备的特征或者独特的设备标识,具有固定性、较难篡改性、唯一性等特质。 设备指纹是金融机构…...
FFmpeg源码学习---ffmpeg
1、ffmpeg源码主函数 ┌────────────────────┐ │ main() │ └─────────┬───────────┘ ↓ ┌────────────────────┐ │ 初始化 (日志/网络等) │ │ init_dynload() │ │ avf…...
leetcode 206. 反转链表
题目描述: 迭代法: /*** Definition for singly-linked list.* struct ListNode {* int val;* ListNode *next;* ListNode() : val(0), next(nullptr) {}* ListNode(int x) : val(x), next(nullptr) {}* ListNode(int x, ListNode …...
NVIDIA新模型DAM-3B:描述一切,图像视频局部描述新突破
在数字时代,图像和视频内容爆炸式增长,如何让AI像人类一样精准描述画面中的特定区域,成为计算机视觉领域的核心挑战。传统模型要么丢失细节,要么缺乏上下文,而NVIDIA与UC Berkeley联合团队提出的DAM(Descri…...
7、langChain和RAG实战:基于LangChain和RAG的常用案例实战
PDF 文档问答ChatBot 本地上传文档 支持 pdf支持 txt支持 doc/docx问答页面 python环境 新建一个requirements.txt文件streamlit python-docx PyPDF2 faiss-cpu langchain langchain-core langchain-community langchain-openai然后安装相应的包pip install -r requirements.t…...
c++11: 类型转换
目录 一 C语言中的类型转换 二 . C强制类型转换 1. static_cast 2. reinterpret_cast 3. const_cast 4. dynamic_cast 三 explicit 关键字 一 C语言中的类型转换 在C语言中,如果赋值运算符左右两侧类型不同,或者形参与实参类型不匹配ÿ…...
Matlab自学笔记五十二:变量名称:检查变量名称是否存在或是否与关键字冲突
1.变量名称的命名规则 有效的变量名称以字母开头,后跟字母、数字或下划线,Matlab变量名称对字母大小写是区分的,A和a是不相同的变量,不能使用与Matlab关键字冲突的变量名称,例如if、end等,判断一个字符是不…...
西门子PLC结构化编程_水处理系统水泵多备多投
文章目录 前言一、功能概述二、程序编写1. 需求分析2. 编写运行时间累计功能块3. 创建自定义数据类型1. 时间排序数据类型2. 多备多投数据类型3. 多备多投切换数据类型 4. 编程1. 创建DB数据块1. 多备多投数据块2. 多备多投切换数据块 2. 创建FB功能块 三、程序调用总结 前言 …...