题目 原题链接 解说 刷$Tarjan$题的时候看到的题目,第一次见到把分层图和$Tarjan$结合的题目,觉得这样的思路很有趣,写博客以记之。 总思路:建双层图->Tarjan缩点->最长路 首先看到题目中“只能走一次的逆向边”这样的条件,我们会很自然地想到建一个分层图。每一个点$i$在第二层有一 ...
分类:
其他好文 时间:
2020-07-28 17:19:27
阅读次数:
69
AcWing 799. 最长连续不重复子序列 #include <bits/stdc++.h> using namespace std; const int N=1e6+10; int a[N],s[N]; int main(){ int n; cin>>n; for(int i=0;i<n;i++ ...
动态规划的核心是找到解题路径中的重复子问题,避免重复计算。 找出问题间的递归关系,用问题解决问题需要培养归纳的思维。 问题定义的好坏直接影响到可以定位出的重叠子问题的多少,可以找出的重叠子问题越多,问题定义越好。 下面是两种问题的定义,效率差距非常大。 解法1,超时: public final in ...
分类:
其他好文 时间:
2020-07-28 14:16:21
阅读次数:
73
j解决这道题我采用的思路是深度优先遍历的方法 类似于题目给出的样例的数组 9 9 4 6 6 8 2 1 1 然后对二维数组中的每个元素进行遍历,一次将他们作为序列的开头,找出这其中的最长的序列的长度就是本题的解了。 由于序列必须递增,并且可以从上下左右任意的方向都行,我们再创建一个对应的二维数组, ...
分类:
其他好文 时间:
2020-07-28 10:18:42
阅读次数:
82
1.1题目 给定一个二叉树,找出其最大深度。二叉树的深度为根节点到最远叶子节点的最长路径上的节点数。 说明: 叶子节点是指没有子节点的节点。 示例:给定二叉树 [3,9,20,null,null,15,7],返回它的最大深度 3 。 1.2解答 很显然是二叉树的遍历问题。遍历每个点然后返回当前点的深 ...
分类:
其他好文 时间:
2020-07-28 10:07:40
阅读次数:
59
题目非常得简洁明了,差分约束的裸题,甚至连不等式都给你写出来了 没什么好分析的,直接看不等式建立方程(这里把$Ti$和$Tj$都表示为$i$和$j$) 因为求的应该是最早的开始时间,我们应该转化为$≥$,然后跑最长路求解 \(i-j \leq b\) \(-j \leq b-i\) \(j \geq ...
分类:
其他好文 时间:
2020-07-28 09:57:56
阅读次数:
70
题目链接 https://leetcode-cn.com/problems/binary-tree-maximum-path-sum/ 题解 递归解法 路径:一条从树中任意节点出发,达到任意节点的序列。该路径至少包含一个节点,且不一定经过根节点。 这道题和LeetCode687最长同值路径和Leet ...
分类:
其他好文 时间:
2020-07-27 23:35:37
阅读次数:
74
题目描述: 方法一:动态规划 O(mnlogmn) class Solution(object): def longestIncreasingPath(self, matrix): if not matrix or not matrix[0]: return 0 m, n = len(matrix) ...
分类:
其他好文 时间:
2020-07-27 15:46:06
阅读次数:
70
无重复字符的最长子串 思路 总体的思路是滑动窗口,可以借助哈希表将这些字符所在位置都记录起来,以便统计不重复子串的长度。 代码 import java.util.HashMap; import java.util.Map; class Solution { public int lengthOfLo ...
分类:
其他好文 时间:
2020-07-27 09:51:04
阅读次数:
75
给定一个整数矩阵,找出最长递增路径的长度。 对于每个单元格,你可以往上,下,左,右四个方向移动。 你不能在对角线方向上移动或移动到边界外(即不允许环绕)。 示例 1:输入: nums = [[9,9,4], [6,6,8], [2,1,1]] 输出: 4 解释: 最长递增路径为 [1, 2, 6, ...
分类:
其他好文 时间:
2020-07-27 09:50:48
阅读次数:
55