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

栈(LIFO)算法题

1.删除字符串中所有相邻的重复字符

注意,我们需要重复处理,而不是处理一次相邻的相同元素就结束了。对示例来说,如果只进行一次处理,结果为aaca,但是处理之后又出现了相邻的重复元素,我们还得继续处理,最后结果就是ca。

解法:借助栈来模拟

        我们可以将字符串中的元素依次入栈,元素入栈前判断是否与栈顶元素相等,如果相等就弹出栈顶元素,继续判断下一个元素。等到字符串全部入栈,栈中的就是最终答案。

但是我们没有必要弄一个stack出来,因为这样最终结果是逆序的,我们可以采用string来模拟栈的行为。 

时间复杂度:O(n)

空间复杂度:O(n) 

class Solution 
{
public:string removeDuplicates(string s) {// 用string模拟栈string ret;for(auto e : s){if(ret.size() && ret.back() == e) ret.pop_back();else ret.push_back(e);}return ret;}
};

2.比较含退格的字符串 

解法1:使用栈来模拟 

        我们可以封装一个函数出来,用来处理字符串中的退格符。然后比较处理之后的字符串即可。而处理字符串的过程,就可以使用栈来模拟,如果不是#就入栈,如果遍历到#就弹出栈顶元素。这一步依旧可以采取string模拟,避免reverse。 

时间复杂度:O(n+m),n和m分别为s,t的长度,遍历两个字符串各一次

空间复杂度:O(m+n),处理字符串时,最坏情况下两者都没有退格符

bool _backspaceCompare(string s, string t) 
{return reBulidString(s) == reBulidString(t);
}string reBulidString(string str)
{string ret;for(auto e : str){if(e == '#' && ret.size()) ret.pop_back();else if(e != '#') ret.push_back(e);}return ret;
}

 解法2:双指针

        因为退格符只会对前面的字符产生影响,所以我们可以逆序遍历字符串。 我们分别定义skipS和skipT来记录当前的退格次数。如果如果#则skipS++,如果遍历到普通字符,则看skipST是否为0,如果为0,则表示这个字符肯定会留下来,接着就去遍历t字符串,找到一个不会被删除的字符,然后判断这两个字符是否相等。如果不相等,则返回false;如果一个字符串为空了,另一个还有,则也返回false。

但是有一种情况需要注意,如果两个字符串最后一个字符是#,或者最后一个字符被删除了,此时两者都越界了,此时返回true。

时间复杂度:O(m+n)

空间复杂度:O(1)

    bool backspaceCompare(string s, string t) {int i = s.size() - 1, j = t.size() - 1;int skipS = 0, skipT = 0;while(i >= 0 || j >= 0) // 这里为什么是或{// 在S中寻找不会被删除的字符while(i>=0){if(s[i] == '#') skipS++, i--;else if(skipS) skipS--, i--;else break; // 退出该循环说明当前这个字符不会被删除}// 在T中寻找不会被删除的字符while(j>=0){if(t[j] == '#') skipT++, j--;else if(skipT) skipT--, j--;else break; // 当前字符不会被删除}if(i>=0 && j>=0){if(s[i] != t[j]) return false;}else if(i>=0 || j>=0) return false;i--, j--;}return true;}

3.基本计算器2 

解法:栈模拟

         我们有可能会遇到空格,数字或者运算符,因为优先级的原因,我们如果遇到+/-时不能直接计算,我们采取的策略是将其先放入到栈中,为了避免+/-的运算不同,所以如果是+号,则直接存储到栈中,如果是-号,则将其相反数压入栈中。这样栈中的元素只需要进行加法运算即可。

如果遇到乘号或者除法,则我们直接将后面的数乘或除到栈顶元素上。等遍历完字符串后,直接将栈中的元素加起来即可。

需要注意的是,数字并不只是一位数,所以我们在遇到数字,需要将后面的数字也提取出来,并且要注意位数。

时间复杂度:O(n)

空间复杂度:O(n)

class Solution 
{
public:int calculate(string s) {   stack<int> calc;// 处理运算符char option = '+'; //第一个数前面的运算符被视为加号for (int i = 0; i < s.size();){// 处理空格if(s[i] == ' '){i++;}else if(isdigit(s[i]))//先获取数字,数字可能是多位数{int tmp = 0;while(i<s.size() && isdigit(s[i])){tmp = tmp*10 + (s[i++]-'0');}//判断该数前面的符号是什么// 加减直接将数字压入栈中,减法压入负数// 乘除让栈顶数据*= / /= 上当前的数字if(option == '+') calc.emplace(tmp);else if(option == '-') calc.emplace(-tmp);else if(option == '*') calc.top() *= tmp;else calc.top() /= tmp;}else // 如果是操作符,则更新操作符{option = s[i];i++;}}// 栈中的元素使用加法计算即可int ret = 0;while (!calc.empty()){ret += calc.top();calc.pop();}return ret;}
};

4.字符串解码 

我们在进行解码的时候要从最内部开始解码,因为最外层的方括号内部可能还嵌套这其他方括号。

解法:栈+分类讨论

        我们在遍历字符串的时候,可能遇到数字,左方括号,右方括号,和字母。而我们要分别存储数字和字母,所以借助两个栈来实现。

如果遇到数字,我们就提取该数字,因为可能是多位数,所以要循环提取,然后将该数压入到数字栈中。

如果遇到了左括号,我们接下来就提取字符串,然后压入到字符栈中。

如果遇到了右括号,说明这是最内层的,此时就可以进行解析。解析之后,我们还得将该结果接到栈顶元素的后面。

如果遇到了字母,则提取该字母,因为该字母并没有出现在括号中,所以没有进行重复,直接插入到栈顶元素的后面即可。

细节:因为字符栈有可能为空,这时向栈顶元素后面加上字符就会报错。所以我们可以提前给栈顶元素压入一个空串。避免这种情况。

时间复杂度:O(S),除了遍历原字符串,每一次解码都会将其连接到栈顶元素。

空间复杂度:O(S),解码后的字符串长度 

class Solution
{
public:string decodeString(string s){stack<int> nst;stack<string> sst;sst.emplace("");int i = 0, n = s.size();while (i < n){// 1.如果遇到数字,则提取数字放入数字栈中if (isdigit(s[i])){int tmp = 0;while (i < n && isdigit(s[i]))tmp = tmp * 10 + (s[i++] - '0');nst.emplace(tmp);}// 2.如果是左括号,则提取左括号后面的字符串else if (s[i] == '['){i += 1;string t;while (i < n && s[i] <= 'z' && s[i] >= 'a')t += s[i++];sst.emplace(t);}// 3.如果是右括号,则拿出两个栈的栈顶进行解析,并将解析后的结果接到sst栈顶的后面else if (s[i] == ']'){//解析string t;int count = nst.top();nst.pop();while (count--) t += sst.top();sst.pop();//更新sst.top() += t;i++;// 遍历下一个位置}// 4.如果直接遇到字母,则直接加到字符栈顶元素的后面else{string t;while (i < n && s[i] <= 'z' && s[i] >= 'a')t += s[i++];sst.top() += t;}}return sst.top();}
};

5.验证栈序列 

这道题在学习栈的时候是经常会遇到的一道题,判断入栈顺序能否满足出栈顺序。 

解法:模拟

        我们按照入栈顺序进行入栈,然后判断栈顶元素与出栈元素是否相等,如果相等,则出栈,然后指针指向下一个出栈元素。如果不相等,则继续入栈。

如果最后栈为空,则说明满足,否则不满足。

时间复杂度:O(n)

空间复杂度:O(n)

class Solution 
{
public:bool validateStackSequences(vector<int>& pushed, vector<int>& popped) {stack<int> st;for(int i=0, j=0; i<pushed.size(); ++i){st.emplace(pushed[i]);while(!st.empty() && st.top() == popped[j]){st.pop();j++;}}return st.empty();}
};

相关文章:

栈(LIFO)算法题

1.删除字符串中所有相邻的重复字符 注意&#xff0c;我们需要重复处理&#xff0c;而不是处理一次相邻的相同元素就结束了。对示例来说&#xff0c;如果只进行一次处理&#xff0c;结果为aaca&#xff0c;但是处理之后又出现了相邻的重复元素&#xff0c;我们还得继续处理&…...

印章/公章识别:PaddleX下的“Seal-Recognition”模型

最近做项目需要对印章进行识别&#xff0c;并提取其中的印章文字&#xff0c;又不希望这个模型太大&#xff0c;还要方便部署&#xff0c;于是乎这个模型是个不错的选择。 一、模型简介 “Seal-Recognition”模型是PaddleX旗下的一款模型&#xff08;PaddleX 是基于飞桨框架构…...

从LLM出发:由浅入深探索AI开发的全流程与简单实践(全文3w字)

文章目录 第一部分&#xff1a;AI开发的背景与历史1.1 人工智能的起源与发展1.2 神经网络与深度学习的崛起1.3 Transformer架构与LLM的兴起1.4 当前AI开发的现状与趋势 第二部分&#xff1a;AI开发的核心技术2.1 机器学习&#xff1a;AI的基础2.1.1 机器学习的类型2.1.2 机器学…...

DeepSeek入门宝典——行业应用篇

大家好&#xff0c;我是吾鳴。 今天吾鳴要给大家分享一份由51CTO智能研究院出品的DeepSeek报告——《DeepSeek入门宝典——行业应用篇》。这份报告主要从DeepSeek核心能力、行业赋能与应用案例、合作伙伴与生态建设和学习资料与体系化方案做了详细的介绍&#xff0c;报告一共有…...

K8S学习之基础三十一:k8s中RBAC 的核心概念

Kubernetes (k8s) 中的 RBAC&#xff08;Role-Based Access Control&#xff0c;基于角色的访问控制&#xff09;是一种用于管理用户和服务账户对集群资源访问权限的机制。RBAC 允许管理员通过定义角色&#xff08;Role&#xff09;和角色绑定&#xff08;RoleBinding&#xff…...

JAVA数据库技术(一)

JDBC 简介 JDBC&#xff08;Java Database Connectivity&#xff09;是Java平台提供的一套用于执行SQL语句的Java API。它允许Java程序连接到数据库&#xff0c;并通过发送SQL语句来查询、更新和管理数据库中的数据。JDBC为不同的数据库提供了一种统一的访问方式&#xff0c;使…...

【Agent】OpenManus-Flow组件详细分析

1. Flow架构概述 OpenManus 的Flow组件实现了一个灵活的工作流管理系统&#xff0c;主要用于协调多个智能体的协作&#xff0c;以完成复杂任务。Flow组件的核心是基于计划的执行模型&#xff0c;它将任务分解为一系列步骤&#xff0c;然后逐步执行这些步骤&#xff0c;直到任务…...

MySQL环境安装详细教程(Windows/macOS/Linux)

摘要&#xff1a;本文详细介绍了在Windows、macOS和Linux三大操作系统下安装MySQL数据库的完整流程&#xff0c;帮助开发者快速搭建本地MySQL环境。 一、MySQL安装前准备 官网下载 访问MySQL官网 → 选择"Downloads" → 选择"MySQL Community (GPL) Downloads&…...

【人工智能基础2】人工神经网络、卷积神经网络基础、循环神经网络、长短时记忆网络

文章目录 三、人工神经网络1. 神经元感知模型2. 神经网络模型3. 学习规则:修改神经网络的权重和偏置反向传播算法&#xff08;BP&#xff09;优化器 - 梯度下降法 四、卷积神经网络基础&#xff08;CNN&#xff09;1. 基本原理2. 计算过程 五、循环神经网络&#xff08;RNN&…...

如何查看windows系统的硬件环境(附方法

方法一&#xff1a;使用命令指示符查询 在“开始”菜单中搜索&#xff1a;命令指示符&#xff0c;并以管理员身份打开&#xff0c; 输入&#xff1a;systeminfo&#xff0c;就可以查看硬件、CPU、处理器等详细内容 systeminfo 方法二&#xff1a;在资源监视器中查看 按住 “…...

基于树莓派的水果分类系统(论文+源码)

针对小型农户的在水果加工销售环节中的分类需求&#xff0c;本文设计并实现了基于树莓派的视觉识别分类系统。本章根据所选水果的具体情况&#xff0c;简述系统各模块的实现方法&#xff0c;设计树莓派的程序算法&#xff0c;并选择合适的器件型号&#xff0c;开发所用的辅助工…...

Gemini Robotics:将人工智能带入物理世界

25年3月来自谷歌的技术报告“Gemini Robotics: Bringing AI into the Physical World”。 大型多模态模型的最新进展&#xff0c;已使数字领域出现卓越的通才能力&#xff0c;但将其转化为机器人等物理智体仍然是一项重大挑战。一般有用的机器人需要能够理解周围的物理世界&am…...

2.5[frontEnd]

requestAnimationFrame 是 浏览器原生 API&#xff0c;定义在 window 对象中&#xff0c;属于 Web API 的一部分。无需任何导入即可直接使用&#xff0c;其类型定义包含在 TypeScript 标准库中。 React 组件挂载时执行该 useEffect 初始化节流计时器 lastEmit 和 25ms 触发间隔…...

【动手学深度学习】#2线性神经网络

主要参考学习资料&#xff1a; 《动手学深度学习》阿斯顿张 等 著 【动手学深度学习 PyTorch版】哔哩哔哩跟李牧学AI 目录 2.1 线性回归2.1.1 线性回归的基本元素线性模型损失函数解析解随机梯度下降 2.1.3 最大似然估计 2.2 线性回归从零开始实现2.2.1 生成数据集2.2.2 读取数…...

C语言动态内存管理(上)

欢迎拜访&#xff1a;雾里看山-CSDN博客 本篇主题&#xff1a;C语言动态内存管理(上) 发布时间&#xff1a;2025.3.16 隶属专栏&#xff1a;C语言 目录 为什么需要动态内存管理静态分配的局限性动态分配的优势 动态内存函数malloc函数介绍函数使用 free函数介绍函数使用 calloc…...

图解多头注意力机制:维度变化一镜到底

目录 一、多头注意力机制概述二、代码实现1. pyTorch 实现2. tensorFlow实现 三、维度变化全流程详解1. 参数设定2. 维度变化流程图3. 关键步骤维度变化 四、关键实现细节解析1. 多头拆分与合并2. 注意力分数计算3. 掩码处理技巧 五、完整运行示例六、总结与常见问题1. 核心优势…...

Navicat如何查看密码

近期遇到需要将大部分已存储的navicat数据库转发给其他人&#xff0c;于是乎进行导出文件 奈何对方不用navicat&#xff0c;无法进行文件的导入从而导入链接 搜罗navicat的密码查看&#xff0c;大部分都为php代码解析 以下转载GitHub上看到的一个python代码解析的脚本 这里是对…...

第4节:分类任务

引入&#xff1a; 独热编码&#xff08;one-hot&#xff09;&#xff1a;对于分类任务的输出&#xff0c;也就是是或不是某类的问题&#xff0c;采取独热编码的形式将y由一离散值转化为连续的概率分布&#xff0c;最大值所在下标为预测类 输入的处理&#xff1a;对于任意一张…...

EasyCVR安防视频汇聚平台助力工业园区构建“感、存、知、用”一体化智能监管体系

在现代工业园区的安全管理和高效运营中&#xff0c;视频监控系统扮演着不可或缺的角色。然而&#xff0c;随着园区规模的扩大和业务的复杂化&#xff0c;传统的视频监控系统面临着诸多挑战&#xff0c;如设备众多难以统一管理、数据存储分散、智能分析能力不足、信息利用率低下…...

计算机网络——DNS

一、什么是DNS&#xff1f; DNS&#xff08;Domain Name System&#xff0c;域名系统&#xff09; 是互联网的核心服务&#xff0c;负责将人类可读的域名&#xff08;如 www.baidu.com&#xff09;转换为机器可识别的 IP地址&#xff08;如 14.119.104.254&#xff09;。它像一…...

STC89C52单片机学习——第20节: [8-2]串口向电脑发送数据电脑通过串口控制LED

写这个文章是用来学习的,记录一下我的学习过程。希望我能一直坚持下去,我只是一个小白,只是想好好学习,我知道这会很难&#xff0c;但我还是想去做&#xff01; 本文写于&#xff1a;2025.03.15 51单片机学习——第20节: [8-2]串口向电脑发送数据&电脑通过串口控制LED 前言…...

1.5[hardware][day5]

Link类跳转指令可以拆分为两个部分&#xff0c;一个是跳转&#xff0c;即下一个PC的生成&#xff0c;如果将分支条件的比较放到译码级来进行&#xff0c;则这部分只涉及取值级和译码级流水&#xff1b;另一个是Link操作&#xff0c;简单来说就是写寄存器&#xff0c;这部则主要…...

Java 多线程编程:提升系统并发处理能力!

多线程是 Java 中实现并发任务执行的关键技术&#xff0c;能够显著提升程序在多核处理器上的性能以及处理多任务的能力。本文面向初级到中级开发者&#xff0c;从多线程的基本定义开始&#xff0c;逐步讲解线程创建、状态管理、同步机制、并发工具以及新兴的虚拟线程技术。每部…...

Mininet 的详细设计逻辑

Mininet 是一个轻量级网络仿真工具&#xff0c;其核心目标是在单台物理机上快速构建复杂的虚拟网络拓扑&#xff0c;支持 SDN&#xff08;软件定义网络&#xff09;和传统网络协议的实验与验证。其设计逻辑围绕 虚拟化、模块化 和 灵活性 展开&#xff0c;以下是其详细设计架构…...

原生微信小程序实现导航漫游(Tour)

效果&#xff1a; 小程序实现导航漫游 1、组件 miniprogram/components/tour/index.wxml <!--wxml--> <view class"guide" wx:if"{{showGuide}}"><view style"{{guideStyle}}" class"guide-box"><view class&quo…...

Spring(6)——Spring、Spring Boot 与 Spring MVC 的关系与区别

Spring、Spring Boot 与 Spring MVC 的关系与区别 1. 核心定位 Spring 定位&#xff1a;基础框架&#xff0c;提供 IoC&#xff08;控制反转&#xff09; 和 DI&#xff08;依赖注入&#xff09; 核心功能&#xff0c;管理对象生命周期及依赖关系。功能&#xff1a;支持事务管…...

神聖的綫性代數速成例題2. 行列式的性質

性質 1&#xff1a;行列式與它的轉置行列式相等&#xff1a; 設為行列式&#xff0c;為其轉置行列式&#xff0c;則。 性質 2&#xff1a;交換行列式的兩行 (列)&#xff0c;行列式變號&#xff1a; 若行列式經過交換第行和第行得到行列式&#xff0c;則。 性質 3&#xff…...

ModelScope推理QwQ32B

文章目录 ModelScope推理QwQ32Bmodel_scope下载QwQ32BModelScope 调用QwQ-32B ModelScope推理QwQ32B 以下载 qwq32b 为例子 需要安装的 python 包 transformers4.49.0 accelerate>0.26.0 torch2.4.1 triton3.0.0 safetensors0.4.5可以使用 conda 创建一个虚拟环境安装 cond…...

使用unsloth进行grpo强化学习训练

说明 unsloth框架可以进行各种sft训练&#xff0c;包括lora和grpo训练。我参考官方方法&#xff0c;使用模型Qwen2.5-3B-Instruct和数据集gsm8k&#xff0c;写了一个grpo训练的例子。 代码 这个代码加载模型Qwen2.5-3B-Instruct和数据集gsm8k。训练完成后先保存lora模型然后…...

【c++】【智能指针】shared_ptr底层实现

【c】【智能指针】shared_ptr底层实现 智能指针之前已经写过了&#xff0c;但是考虑到不够深入&#xff0c;应该再分篇写写。 1 shared_ptr 1.1 shared_ptr 是什么 std::shared_ptr是一个类模板&#xff0c;它的对象行为像指针&#xff0c;但是它还能记录有多少个对象共享它…...

python拉取大视频导入deepseek大模型解决方案

使用Python拉取大视频并导入大模型&#xff0c;需要综合考虑数据获取、存储、处理和资源管理&#xff0c;确保高效稳定地处理大视频数据&#xff0c;同时充分利用大模型的性能&#xff0c;以下是分步方案及代码示例&#xff1a; --- 1. 分块下载大视频&#xff08;避免内存溢出…...

【Python】面向对象

编程的两大特点 面向过程&#xff1a;着重于做什么面向对象&#xff08; oop&#xff09;&#xff1a;着重于谁去做 python是面向对象语言&#xff0c;面向对象三大特点&#xff1a;封装、继承、多态 面向对象&#xff1a;便于代码管理&#xff0c;方便迭代更新。 新式类、经…...

leetcode日记(100)填充每个节点的下一个右侧节点指针

和层序遍历差不多的思路&#xff0c;将节点储存在队列里&#xff0c;一边取出节点一边放入取出节点的左右节点&#xff0c;直到队列空。 /* // Definition for a Node. class Node { public:int val;Node* left;Node* right;Node* next;Node() : val(0), left(NULL), right(NU…...

docker入门篇

使用docker可以很快部署相同的环境,这也是最快的环境构建,接下来就主要对docker中的基础内容进行讲解.Docker 是一个用于开发、交付和运行应用程序的开源平台&#xff0c;它可以让开发者将应用程序及其依赖打包到一个容器中&#xff0c;然后在任何环境中运行这个容器&#xff0…...

python语法

1. 前面先写import导入模块&#xff0c;完整的语法是&#xff1a; [from 模块名] import [模块 | 类 | 变量 | 函数 | *] [as 别名] 语法还可以是&#xff1a; from 模块名 import 功能名 如果import整个模块的话&#xff0c;需要用.功能名()&#xff0c;来用这个功能&#xff…...

Dify使用部署与应用实践

最近在研究AI Agent&#xff0c;发现大家都在用Dify&#xff0c;但Dify部署起来总是面临各种问题&#xff0c;而且我在部署和应用测试过程中也都遇到了&#xff0c;因此记录如下&#xff0c;供大家参考。Dify总体来说比较灵活&#xff0c;扩展性比较强&#xff0c;适合基于它做…...

微信小程序接入DeepSeek模型(火山方舟),并在视图中流式输出

引言&#xff1a; DeepSeek&#xff0c;作为一款先进的自然语言处理模型&#xff0c;以其强大的文本理解和生成能力著称。它能够处理复杂的文本信息&#xff0c;进行深度推理&#xff0c;并快速给出准确的回应。DeepSeek模型支持流式处理&#xff0c;这意味着它可以边计算边输…...

前端性能优化指标及优化方案

前端性能优化的核心目标是 提高页面加载速度、降低交互延迟、减少资源占用。常见的 Web 性能指标包括 LCP、FID、CLS、TTFB、TTI、FCP 等。 关键性能指标&#xff08;Web Vitals&#xff09; 指标优化方案 &#xff08;1&#xff09;LCP&#xff08;Largest Contentful Paint&…...

正则化介绍

简单介绍 正则化是用于控制模型的复杂度&#xff0c;防止模型在训练数据上过度拟合&#xff08;overfitting&#xff09;。正则化通过在模型的损失函数中引入额外的惩罚项&#xff0c;来对模型的参数进行约束&#xff0c;从而降低模型的复杂度。这个额外的惩罚通常与模型参数的…...

AI时代:数字媒体的无限可能

人工智能和数字媒体技术正深刻改变着我们的生活。通过大数据分析、机器学习等技术&#xff0c;人工智能不仅能精准预测用户需求&#xff0c;还能在医疗、金融等多个领域提供高效解决方案。与此同时&#xff0c;数字媒体技术的进步使得信息传播更加迅速和广泛。社会计算作为新兴…...

自动化爬虫drissionpage

自动化爬虫drissionpage官网 自动化测试框架&#xff1a;DrissionPage DrissionPage调用工具汇总 网络爬虫工具比较-DrissionPage、Selenium、Playwright...

禁毒知识竞赛主持稿串词

尊敬的各位领导、各位来宾、参赛选手们&#xff1a;大家好&#xff01; 在市禁毒委员会的领导下&#xff0c;今年我市开展了以“参与禁毒战争&#xff0c;构建和谐社会”为主题的禁毒宣传月活动。为了进一步加强我市禁毒宣传力度&#xff0c;促进社会治安的好转和社会主义物质文…...

【JDK17】Jlink一秒生成精简的JRE

之前介绍了 Java17模块化的JDK&#xff0c;模块化后按需使用Jlink 用于精简生成 JRE 环境&#xff0c;这让快速的开发环境增强了编码的愉悦感。在实际生产环境中使用 mave 进行项目的构建&#xff0c;其次再是精简 JRE 缩小容器镜像体积&#xff0c;为实现一体化的流程&#xf…...

机器学习周报--文献阅读

文章目录 摘要Abstract 1 文章内容1.1 模型结构1.1.1 LSTMAT的结构设置1.1.2 AWPSO算法优化模型 1.2 实验与结果讨论1.2.1 处理缺失数据1.2.2 模型评估指标1.2.3 比较实验1.2.4 消融实验&#xff08;ABLATION EXPERIMENTS&#xff09; 2相关知识2.1 自适应权重粒子群优化&#…...

硬件地址反序?用位操作为LED灯序“纠偏”。反转二进制数即可解决

特别有意思&#xff0c;LED的灯序与其硬件地址刚好相反&#xff0c;没办法直接通过加1实现二进制进位的亮灯操作&#xff0c;查了一些资料说用数组和switch实现&#xff0c;觉得太麻烦了&#xff0c;思索良久&#xff0c;就想到了反转二进制数解决这个问题。 reverse_bits( )是…...

A* floyd算法 bellman-ford

求源点到目标点最短距离 排序的里面要加上与目标点一个预估距离,与dj算法差距只有这儿 预估要小于等于真实的最短距离,吸引力要适当 越接近实际距离越快 #include<bits/stdc.h> using namespace std;// 方向向量&#xff1a;上、右、下、左 const vector<int> …...

【数据挖掘】KL散度(Kullback-Leibler Divergence, KLD)

KL散度&#xff08;Kullback-Leibler Divergence, KLD&#xff09; 是衡量两个概率分布 P 和 Q之间差异的一种非对称度量。它用于描述当使用分布 Q 逼近真实分布 P 时&#xff0c;信息丢失的程度。 KL散度的数学定义 给定两个离散概率分布 P(x)和 Q(x)&#xff0c;它们在相同的…...

Linux shell 进度条

概述 在 Linux Shell 中实现一个简单的进度条可以通过 printf 命令结合特殊字符来实现&#xff0c;以下是一个示例脚本&#xff0c;它模拟了一个从 0% 到 100% 的进度条。 作用 反馈任务进度&#xff1a;让用户直观了解任务执行的进展情况&#xff0c;比如文件拷贝、系统更新…...

ctfshow web刷题记录

RCE 第一题 eval代码执行 &#xff1a; 1、使用system 加通配符过滤 ?csystem("tac%20fl*") ; 2、反字节执行 xxx %20 echo 反字节 3、变量转移 重新定义一个变量 让他代替我们执行 4、伪协议玩法 ?cinclude$_GET[1]?>&1php://filter/readc…...

leetcode日记(101)填充每个节点的下一个右侧节点指针Ⅱ

意料之中有这题&#xff0c;将之前的思路换一下即可&#xff0c;层序遍历的思路将record&#xff08;记录下一个循环的次数&#xff09;手动加减。 /* // Definition for a Node. class Node { public:int val;Node* left;Node* right;Node* next;Node() : val(0), left(NULL)…...