并查集|棧

?

?

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
英文地址,請注明出處:http://en.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;并…