代码随想录算法训练营day71 | 53. 寻宝 在节点数量固定的情况下,图中的边越少,Kruskal 需要遍历的边也就越少。而 prim 算法是对节点进行操作的,节点数量越少,prim算法效率就越优。所以在 稀疏图中,用Kruskal更优。在稠密图中,用prim算法更优。复杂度Prim 算法 时间复杂度为 O(n^2),其中 n 为节点数量,它的运行效率和图中边树无关,适用稠密图。Kruskal算法 时间复杂度 为 nlogn,其中n 为边的数量,适用稀疏图。
代码随想录算法训练营day63 | 42. 接雨水、84.柱状图中最大的矩形 遍历每根柱子(第一个和最后一个不需要遍历,因为不可能存住水),找到当前柱子的左边最高柱子lHeight,右边最高柱子rHeight,当前柱子能存的水为min(min(lHeight, rHeight) - 当前柱子的高度, 0)会超时。
代码随想录算法训练营day62 | 739. 每日温度、496.下一个更大元素 I 、503.下一个更大元素II 通常是一维数组,要寻找任一个元素的右边或者左边第一个比自己大或者小的元素的位置,此时我们就要想到可以用单调栈了。时间复杂度为O(n)。单调栈的本质是空间换时间,因为在遍历的过程中需要用一个栈来记录右边第一个比当前元素高的元素,优点是整个数组只需要遍历一次。使用单调栈主要有三个判断条件。
代码随想录算法训练营day60 | 647. 回文子串、516.最长回文子序列 布尔类型的dp[i][j]:表示区间范围[i,j] (注意是左闭右闭)的子串是否是回文子串,如果是dp[i][j]为true,否则为false。
代码随想录算法训练营day57 | 1143.最长公共子序列、1035.不相交的线、53. 最大子序和 dp[i][j]:长度为[0, i - 1]的字符串text1与长度为[0, j - 1]的字符串text2的最长公共子序列为dp[i][j]
代码随想录算法训练营day56 | 300.最长递增子序列、674. 最长连续递增序列、718. 最长重复子数组 dp[i]表示i之前包括i的以nums[i]结尾的最长递增子序列的长度,一定要是以nums[i]为结尾。
代码随想录算法训练营day53 | 309.最佳买卖股票时机含冷冻期、714.买卖股票的最佳时机含手续费 dp[i][j],第i天状态为j,所剩的最多现金为dp[i][j]。不持有股票状态,这里就有两种卖出股票状态冷冻期为状态四。