leetcode tarjan 341 lca

lca和树上差分

## 关于lca lca就是最近公共祖先,也就是两个节点的公共祖先距离节点最近,距离根节点最远的 ### 倍增法求lca 倍增主要用到了二进制拆分的思想 首先明确一个定义, _k级祖先_ ,若节点x的父节点为x的一级祖先,那么父节点的k级祖先也就是x节点的k+1级祖先 而用倍增法求lca要需要x节点 ......
lca

LeetCode从算法到算命—344.翻转字符串

# 344.翻转字符串 ## 题目信息 编写一个函数,其作用是将输入的字符串反转过来。输入字符串以字符数组 `s` 的形式给出。 不要给另外的数组分配额外的空间,你必须**[原地](https://baike.baidu.com/item/原地算法)修改输入数组**、使用 O(1) 的额外空间解决这 ......
字符串 算法 字符 LeetCode 344

图的连通性相关(Tarjan算法)

(大抄蓝书) # Part 1:无向图连通性 ## 无向图的割点与桥 给定无向图 $G=(V,E)$: - 若对于 $x\in V$,从图中删去节点 $x$ 以及所有与 $x$ 关联的边之后,$G$ 分裂成两个或两个以上不相连的子图,则称 $x$ 为 $G$ 的**割点** - 若对于 $e\in ......
算法 Tarjan

LeetCode 周赛上分之旅 #38 结合排序不等式的动态规划

> ⭐️ **本文已收录到 AndroidFamily,技术和职场问题,请关注公众号 \[彭旭锐] 和 [BaguTree Pro](https://www.mdnice.com/writing/85b28c4e60354865a423728e668fc570) 知识星球提问。** > > 学习数据 ......
不等式 LeetCode 之旅 动态 38

强连通分量Tarjan算法学习笔记

## 定义 一个**有向图** $G$ 强连通,指的是 $G$ 的任意两个结点连通。强连通分量 `SCC` 指的是极大的强连通子图。 ## Tarjan 的做法 首先来看一个 DFS 树,图源 OI Wiki ![](https://img2023.cnblogs.com/blog/1646455/ ......
分量 算法 笔记 Tarjan

LeetCode 周赛上分之旅 # 37 多源 BFS 与连通性问题

> ⭐️ **本文已收录到 AndroidFamily,技术和职场问题,请关注公众号 \[彭旭锐] 和 [BaguTree Pro](https://files.mdnice.com/user/3257/de950859-eb71-4821-a36b-bebe5cff500d.png) 知识星球提问 ......
LeetCode 之旅 问题 BFS 37

LeetCode从算法到算命—24.两两交换链表中的节点(0806)

# 24.两两交换链表中的节点 ## 题目信息 给你一个链表,两两交换其中相邻的节点,并返回交换后链表的头节点。你必须在不修改节点内部的值的情况下完成本题(即,只能进行节点交换)。 **示例 1:** ![image](https://img2023.cnblogs.com/blog/3083774 ......
节点 算法 LeetCode 0806 24

关于 LCA 的简单记录

最近做了几道 LCA 的题目。所以总结一下。 首先我们来回顾一下倍增求 LCA 的流程吧。 首先是初始化: - 进行 bfs。 - 处理出每层的深度。 - 处理每个节点的 $2^k$ 级父亲,方式为一个递推,即为由 $2^{k-1}$ 级祖先的 $2^{k - 1}$ 祖先推出 $2^k$ 级祖先。 ......
LCA

tarjan,点双和边双学习笔记。

发现之前学的真的一塌糊涂呢(*/ω\*) 很多非常精髓的地方理解的都不够好,比如说为啥我要用一棵 dfs 树来为框架,跑 tarjan?这里我就理解的不好,所以我来重新写一篇,加深加深印象。 以下一切默认为无向图。 ### 0. 基本概念 这里面说的非常不严谨,只是为了方便理解啦 awa - 连通分 ......
双学 笔记 tarjan

leetcode:括号生成

回溯的本质是穷举,穷举所有情况,这里有剪枝,只在有效情况下继续 class Solution { vector<string> res; string str; void backtracking(int left,int right){ if(left<0 || left>right) retur ......
括号 leetcode

Leetcode第357场周赛

https://leetcode.cn/contest/weekly-contest-357/ ## C 寻找不安全路径 以所有小偷点为源点,跑多源点BFS,求出每个点到最近小偷点的曼哈顿距离,记为w[i, j] 二分答案Mid,只允许走w[i, j] >= mid的点,从源店跑DFS/BFS,看是 ......
Leetcode 357

Tarjan缩点

P3225 [HNOI2012] 矿场搭建 一共只会删除一个点,将每个点双连通分量分三种情况讨论 第一种:点双连通分量没有割点,那么为了保证一定可以逃出去,至少需要两个点 第二种:点双连通分量有且只有一个割点,此处割点是绿色的点,那么对于这种点双连通分量 就需要在每个只有一个割点的双连通分量中设置一 ......
Tarjan

Tarjan 系列学习笔记

最近在复习提高算法,所以~~学习~~复习笔记写的就比较多。 Tarjan 系列的算法主要针对于图论而言。 ## Part $1$ 缩点 缩点算是 Tarjan 算法最广泛的应用了。 先讲拓扑序。在一个有向图中,若此图无环,我们称这个图是有向无环图,也叫 DAG,我们可以用拓扑排序解决许多图上问题,简 ......
笔记 Tarjan

【LeetCode剑指offer#06】实现pow函数、计算x的平方根

### 实现pow函数 实现 [pow(*x*, *n*)](https://www.cplusplus.com/reference/valarray/pow/) ,即计算 `x` 的整数 `n` 次幂函数(即,`xn` )。 **示例 1:** ``` 输入:x = 2.00000, n = 10 ......
平方根 函数 LeetCode offer pow

[LeetCode] 1351. Count Negative Numbers in a Sorted Matrix 统计有序矩阵中的负数

Given a `m x n` matrix `grid` which is sorted in non-increasing order both row-wise and column-wise, return *the number of **negative** numbers in* `g ......
负数 矩阵 LeetCode Negative Numbers

LeetCode从算法到算命—每日一题(0805)

# 21. 合并两个有序链表 ## 题目信息 将两个升序链表合并为一个新的 **升序** 链表并返回。新链表是通过拼接给定的两个链表的所有节点组成的。 **示例 1:** ``` 输入:l1 = [1,2,4], l2 = [1,3,4] 输出:[1,1,2,3,4,4] ``` **示例 2:** ......
算法 LeetCode 0805

LeetCode 206 反转链表,LeetCode 92反转链表Ⅱ

206. 反转链表 给你单链表的头节点 head ,请你反转链表,并返回反转后的链表。 示例 1: 输入:head = [1,2,3,4,5] 输出:[5,4,3,2,1] 示例 2: 输入:head = [1,2] 输出:[2,1] 示例 3: 输入:head = [] 输出:[] 提示: 链表中 ......
LeetCode 206

LeetCode -- 722. 删除注释

利用双指针来进行删除操作 class Solution { public: vector<string> removeComments(vector<string>& source) { string str; for(auto it : source) str += it + "'"; int n ......
注释 LeetCode 722

LeetCode 3. 无重复字符的最长子串

``` class Solution { public: int res=0; int lengthOfLongestSubstring(string s) { int n=s.size (); if(!n) return 0; bool st[128]={false}; for(int j=0,i ......
字符 LeetCode

tarjan(dcc-e)

# [冗余路径]([395. 冗余路径 - AcWing题库](https://www.acwing.com/problem/content/397/)) 考虑无向图的边双连通分量。 这个算法也叫 `Tarjan` 算法,且与有向图的强连通分量差不多。 边双是指图中任意两点间都存在两条不相交的路径( ......
tarjan dcc-e dcc

LeetCode从算法到算命—每日一题(0804)

# 980.不同路径III ## 题目信息 在二维网格 `grid` 上,有 4 种类型的方格: - `1` 表示起始方格。且只有一个起始方格。 - `2` 表示结束方格,且只有一个结束方格。 - `0` 表示我们可以走过的空方格。 - `-1` 表示我们无法跨越的障碍。 返回在四个方向(上、下、左 ......
算法 LeetCode 0804

Tarjan(scc)

`Tarjan` 算法之一是一个强连通分量算法,可以找出所有的强连通分量,时间复杂度线性。 算法中对于搜索树(如下图)作了如下定义: ![image-20230804164723082](https://img2023.cnblogs.com/blog/3107168/202308/3107168- ......
Tarjan scc

图论强联通分量(tarjan)算法

[图论强联通分量(tarjan)算法](http://www.jzoj.cn/problem.php?cid=5808&pid=3 "图论强联通分量(tarjan)算法") ``` #include using namespace std; int n,m,cnt,cntb,ans; vector ......
分量 算法 tarjan

LeetCode 739. 每日温度

``` class Solution { public: vector dailyTemperatures(vector& t) { stack st; int n=t.size(); vector res(n); for(int i=n-1;i>=0;i--) { while(st.size()& ......
LeetCode 温度 739

LeetCode -- 980. 不同路径 III

本题让我们求不相交路径数目 方法1:递归/回溯 dfs(x, y, left) 表示从点x, y出发,还剩下left个可行走点的路径数目。 每行走到一个新的点就将该点设置为-1, 避免重复搜索。 当走到终点时,如果left == 0 则答案 + 1 class Solution { int dfs( ......
路径 LeetCode 980 III

[LeetCode] 980. Unique Paths III

You are given an m x n integer array grid where grid[i][j] could be: 1 representing the starting square. There is exactly one starting square. 2 repre ......
LeetCode Unique Paths 980 III

代码随想录算法训练营第八天| LeetCode 344.反转字符串 541. 反转字符串II 151.翻转字符串里的单词

344.反转字符串 卡哥建议: 本题是字符串基础题目,就是考察 reverse 函数的实现,同时也明确一下 平时刷题什么时候用 库函数,什么时候 不用库函数 题目链接/文章讲解/视频讲解:https://programmercarl.com/0344.%E5%8F%8D%E8%BD%AC%E5%AD ......
字符串 字符 随想录 训练营 随想

LeetCode 热题 100 之 48. 旋转图像

# 题目 给定一个 n × n 的二维矩阵 matrix 表示一个图像。请你将图像顺时针旋转 90 度。 你必须在 原地 旋转图像,这意味着你需要直接修改输入的二维矩阵。请不要 使用另一个矩阵来旋转图像。 ![image](https://img2023.cnblogs.com/blog/22041 ......
LeetCode 图像 100 48

LeetCode 热题 100 之 54. 螺旋矩阵

# 题目 给你一个 m 行 n 列的矩阵 matrix ,请按照 顺时针螺旋顺序 ,返回矩阵中的所有元素。 **示例 1:** ![image](https://img2023.cnblogs.com/blog/2204134/202308/2204134-20230803145822194-967 ......
矩阵 螺旋 LeetCode 100 54