并查集|栈

 

 

lc1668

不能直接跳

class Solution {
public:
int maxRepeating(string sequence, string word) {
int k = 0, n = sequence.size(), wn = word.size(), t = 0;
for (int i = 0; i <= n - wn; i++) {
if (sequence.substr(i, wn) == word) {
t = 1;
int j = i + wn;
while (j + wn <= n && sequence.substr(j, wn) == word) {
t++;
j += wn;
}
k = max(k, t);
}
}
return k;
}
};

 

 

lc969

两次翻转实现煎饼排序:先找到当前未排序部分的最大元素

第一次翻转将其移到数组开头

第二次翻转将其移到当前未排序部分的末尾(即正确位置)

重复此过程直到数组有序,最终返回所有翻转操作的长度记录。

 class Solution {
public:
vector<int> pancakeSort(vector<int>& a)

{
int n=a.size();
vector<int> res;
for(int i=n;i>1;--i){
int m=-1,idx=-1;
for(int j=0;j<i;++j)

          {
if(a[j]>m)m=a[j],idx=j;
}

reverse(a.begin(),a.begin()+idx+1);
reverse(a.begin(),a.begin()+i);


res.push_back(idx+1);

            res.push_back(i);
}
return res;
}
};

 

lc856

用栈处理括号字符串,左括号存0,遇右括号时,若栈顶是0(对应“()”)则替换为1

若栈顶是数字(对应“(ABC)”)则累加内部数字再乘2

最后把栈里所有分数相加ABC,得到括号的最终分数

 class Solution {
public:
int scoreOfParentheses(string S)

{
stack<int> s;       
for(char c:S){      
if(c=='('){     //遇到左括号入栈,用0模拟
s.push(0);
}
else{       //遇到右括号进行判断       
if(s.top()==0){     //栈顶为0即栈顶为左括号,此时为()的情况,得1分     
s.pop();        
s.push(1);
}
else{       //栈顶不为左括号即为(ABC)的情况,得分为(A+B+C)*2
int inScore=0;
while(s.top()!=0){

inScore+=s.top();
s.pop();
}
s.pop();
s.push(inScore*2);
}
}
}
int score=0;
while(!s.empty()){      //最后栈内都是分数,没有括号了,求和即可
score+=s.top();
s.pop();
}
return score;
}
};

 

lc1319.

dfs

class Solution {
public:
vector<vector<int>> build_graph(const int& n,const  vector<vector<int>>& connections) const{
vector<vector<int>> graph(n,vector<int>());

for(auto& edge: connections){
graph[edge[0]].push_back(edge[1]);
graph[edge[1]].push_back(edge[0]);
}

return graph;
}

void dfs(const vector<vector<int>>& graph,unordered_set<int>& visited,int node){
if(visited.count(node))
return;

visited.insert(node);

for(const auto& neighbor: graph[node])
dfs(graph,visited,neighbor);
}

int makeConnected(int n, vector<vector<int>>& connections) {
if(connections.size() < n-1)
return -1;
// 建图
vector<vector<int>> graph = build_graph(n,connections);

unordered_set<int> visited;
int connected_components = 0;
// 遍历顶点
for(int node = 0;node < n;node++){
// 如果没被访问过
if(!visited.count(node)){
connected_components++;
dfs(graph,visited,node);
}
}

return connected_components-1;
}
};

 

并查集写法

 class UnionFind

{
private:
unordered_map<int,int> father;
int num_of_sets;

public:
UnionFind(int size): num_of_sets(size){
for(int i = 0;i < size;i++)
father[i] = i;
}

int get_num_of_sets(){
return num_of_sets;
}

int find(int x){
if(father[x] == x) return x;
// 路径压缩
father[x] = find(father[x]);
return father[x];
}

bool is_connected(int x,int y){
return find(x) == find(y);
}

void merge(int x,int y){
father[find(x)] = find(y);
num_of_sets--;
}
};

 

class Solution {
public:
int makeConnected(int n, vector<vector<int>>& connections) {
if(connections.size() < n-1) return -1;

UnionFind uf(n);

for(auto& edge: connections){
if(!uf.is_connected(edge[0],edge[1])){
uf.merge(edge[0],edge[1]);
}
}

return uf.get_num_of_sets() - 1;
}
};

 

 

 

 

 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。
如若转载,请注明出处:http://www.pswp.cn/news/921313.shtml
繁体地址,请注明出处:http://hk.pswp.cn/news/921313.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

问题三ai思路

好的&#xff0c;我把“路线A&#xff1a;分类建模择时”的代码按功能分段给出&#xff0c;并为每段配上简明解释。你可以将这些段落依次粘贴到已完成清洗后的 df 变量之后直接运行。 0. 依赖导入&#xff08;一次即可&#xff09; 作用&#xff1a;导入所需库&#xff1b;后续…

Java第十四幕集合啦啦啦啦啦啦啦啦啦啦啦啦啦啦啦啦啦啦啦

集合1 Collection接口1.1 集合概述集合是一个装对象的容器。集合中只能存放引用数据类型的对象。集合中有一些大小是固定的&#xff0c;有一些是不固定的。有一些是有序的&#xff0c;有些是无序的。有些可以有重复元素&#xff0c;有一些不可以有重复元素1.2 集合常用方法publ…

硬件基础:串口通信

数据传输方式&#xff08;按位传输方式&#xff09;并行通信通过多条数据线同时传输多个数据位&#xff0c;速度较快但成本高&#xff0c;抗干扰能力弱&#xff0c;适用于短距离通信&#xff0c;如早期的打印机接口。串行通信通过单条或少数数据线逐位传输数据&#xff0c;线路…

从Java全栈到云原生:一场技术深度对话

从Java全栈到云原生&#xff1a;一场技术深度对话 面试官与应聘者互动记录 面试官&#xff1a;你好&#xff0c;欢迎来到我们的面试。先简单介绍一下你自己吧。 应聘者&#xff1a;您好&#xff0c;我叫李明&#xff0c;28岁&#xff0c;硕士学历&#xff0c;有5年Java全栈开发…

158-EEMD-HHT算法

158-EEMD-HHT#EMD #希尔伯特变换-&#xff08;Hilbert- Huang Transform&#xff0c;HHT&#xff09;#集合经验模态分解 EEMD #时频分析 #边际谱代码描述1、利用 集合经验模态分解&#xff08;EEMD&#xff09;方法对信号进行分解&#xff0c;得到模态分量 IMF&#xff1b;2、计…

C#开发中的 token

C# 开发中的 Token 详解 C# 开发中的 Token 详解与示例 1. CancellationToken - 异步取消令牌 示例 1:基础取消机制 示例 2:Web API 中的请求取消 2. JWT Token - 身份验证令牌 示例 1:JWT Token 生成与验证 示例 2:ASP.NET Core JWT 认证配置 3. Access Token - API 访问令…

旅游安全急救实训室助力应急处置技能实战化

随着旅游行业的快速发展&#xff0c;游客安全需求日益突出&#xff0c;应急处置能力已成为旅游服务人才的核心素养之一。在中职教育旅游服务与管理专业中&#xff0c;旅游安全急救实训室作为关键教学场所&#xff0c;正发挥着不可替代的作用。一、旅游安全急救实训室的建设背景…

分布式微服务--ZooKeeper的客户端常用命令 Java API 操作

一、ZooKeeper 客户端常用命令 1. 启动与退出 bin/zkCli.sh -server 127.0.0.1:2181 # 连接客户端 quit # 退出客户端2. 节点操作 # 查看子节点 ls / ls -s / ls /app# 查看节点详细信息 ls2 /app stat /app# 创建节点 create /node1 "…

PID控制技术深度剖析:从基础原理到高级应用(六)

PID 控制技术深度剖析&#xff1a;从基础原理到高级应用 最近在项目中有要开始进行PID的控制了&#xff0c;隔了很久没有做PID控制的东西了&#xff0c;所以想正好借这个机会&#xff0c;温习一下和PID有关的内容。 系列文章目录 PID控制技术深度剖析&#xff1a;从基础原理到…

PCL关键点提取

1. 核心概念:什么是关键点?为什么需要关键点? 关键词:信息冗余、计算效率、突出特征 “想象一下,我们有一片密集的点云,包含几十万个点。如果我们直接在每个点上都计算像FPFH这样的局部特征,计算量会非常大,极其耗时,而且很多点所处的区域(比如平坦的墙面)特征非常…

vcruntime140_1.dll缺失怎么办?暗黑破坏神游戏vcruntime140_1.dll缺失的4个解决方法

你是否遇到过这样的情况&#xff1a; 玩《暗黑破坏神》《英雄联盟》《GTA5》的时候&#xff0c;游戏忽然闪退&#xff0c;弹窗提示&#xff1a; “无法启动&#xff0c;因为计算机中丢失 vcruntime140_1.dll” 这不是某一个游戏的问题&#xff0c;而是 Windows 系统运行库缺失…

迁移学习-ResNet

好的&#xff0c;我将为你撰写一篇关于ResNet迁移学习的技术博客。以下是博客的主要内容&#xff1a;ResNet迁移学习&#xff1a;原理、实践与效果深度解析1. 深度学习中迁移学习的重要性与ResNet的独特价值迁移学习&#xff08;Transfer Learning&#xff09;是机器学习中一种…

极大似然估计与概率图模型:统计建模的黄金组合

在数据驱动的时代&#xff0c;如何从海量信息中提取有价值的规律&#xff1f;统计建模提供了两大核心工具&#xff1a;极大似然估计&#xff08;MLE&#xff09;帮助我们根据数据推断模型参数&#xff0c;而概率图模型&#xff08;PGM&#xff09;则通过图形化语言描述变量间的…

解析豆科系统发育冲突原因

生命之树是进化生物学的核心&#xff0c;但由于 不完全谱系排序&#xff08;ILS&#xff09;、杂交 和 多倍化 等复杂过程&#xff0c;解析深层且难解的系统发育关系仍然是一个挑战。**豆科&#xff08;Leguminosae&#xff09;**这一物种丰富且生态多样化家族的理解&#xff0…

从Java全栈到前端框架:一次真实的面试对话与技术解析

从Java全栈到前端框架&#xff1a;一次真实的面试对话与技术解析 在一次真实的面试中&#xff0c;一位拥有多年经验的Java全栈开发工程师&#xff0c;被问及了多个涉及前后端技术栈的问题。他的回答既专业又自然&#xff0c;展现了扎实的技术功底和丰富的实战经验。 面试官&…

阿瓦隆 A1566HA 2U 480T矿机参数解析:性能与能效深入分析

在矿机行业&#xff0c;AvaLON是一个备受关注的品牌&#xff0c;尤其在比特币&#xff08;BTC&#xff09;和比特币现金&#xff08;BCH&#xff09;挖矿领域&#xff0c;凭借其强劲的算力和高效能效&#xff0c;在市场中占据了一席之地。本文将针对阿瓦隆 A1566HA 2U 480T矿机…

小迪安全v2023学习笔记(七十八讲)—— 数据库安全RedisCouchDBH2database未授权CVE

文章目录前记服务攻防——第七十八天数据库安全&Redis&CouchDB&H2database&未授权访问&CVE漏洞前置知识复现环境服务判断对象类别利用方法数据库应用 - Redis-未授权访问&CVE漏洞前置知识案例演示沙箱绕过RCE - CVE-2022-0543未授权访问 - CNVD-2019-2…

HTML + CSS 创建图片倒影的 5 种方法

HTML CSS 创建图片倒影的 5 种方法 目标&#xff1a;掌握多种生成“图片倒影 / Reflection”效果的实现思路&#xff0c;理解兼容性、性能差异与最佳实践&#xff0c;方便在真实业务&#xff08;商品展示、相册、登陆页面视觉强化&#xff09;中安全使用。 总览对比 方法核心…

一个文件被打开io流和不打卡 inode

1. 磁盘 最小基本单位 扇区 机器磁盘的io效率 &#xff08;读和取&#xff09;2. 文件系统 对磁盘分区 &#xff0c;最小的文件单位块组&#xff0c;快组内部已经划分好区域&#xff0c;巴拉巴拉&#xff0c;总之&#xff0c;每次使用数据&#xff0c;以操作系统的处理都是块级…

ThermoSeek:热稳定蛋白数据库

这篇论文提出了ThermoSeek&#xff0c;一个综合性的网络资源&#xff0c;用于分析来自嗜热和嗜冷物种的蛋白质序列和结构。具体来说&#xff0c;数据收集&#xff1a;从美国国家生物技术信息中心&#xff08;NCBI&#xff09;的基因组数据库中收集了物种的分类ID&#xff0c;并…