随笔分类 - 算法
我秃了,也变强了(
摘要:Dijkstra 朴素版 朴素版 解题思路 和prime方法的思路是一样的,只不过这次我们不找离最小生成树最近的节点,而是寻找离源点距离最近的节点,同时也要记录节点是否被访问过,以避免重复访问。因此,minDist变成用来存储 每一个节点距离源点的最小距离。 堆优化版 堆优化版 解题思路 用邻接表存
阅读全文
摘要:拓扑排序精讲 拓扑排序精讲 解题思路 拓扑排序是用来将一个有向图转成线性的排序。也能作为判断有向无环图的工具 知识点 利用广度优先,先确定初始点,初始点应该是入度为0的节点,随后反复进行以下两步: 找到入度为0的节点,加入结果集 将该节点从图中移除 在该过程中,我们利用一个队列来存放结果集。 该过程
阅读全文
摘要:最小生成树 最小生成树是所有节点的最小连通子图,即该子图中所有边的权重之和最小。 prim算法精讲 prim算法精讲 解题思路 prim是贪心的思路,每次寻找距离 最小生成树 最近的节点,并加入到最小生成树中。以下是核心步骤 选距离生成树最近节点 最近节点加入生成树 更新非生成树节点到生成树的距离
阅读全文
摘要:并查集是用来判断两个元素是否在同一集合内,或者将两个元素放入同一个集合中。并查集使用的方法是通过将所有元素转化成一个高度为一的多叉树,如果这两个元素的根相同,那么他们就是一个以下是代码模板 int n = 1005; // n根据题目中节点数量而定,一般比节点数量大一点就好 vector<int>
阅读全文
摘要:字符串接龙 字符串接龙 解题思路 利用每次更改一次的特性在字典中来找到符合条件的字符串,同时,我们利用set数据结构来筛选该字符串是否被访问过,同时记录到达该字符串所需要的路径长度 知识点 心得 有向图的完全可达性 有向图的完全可达性 解题思路 有向图和无向图的区别在于它的边是有方向的,因此我们需要
阅读全文
摘要:孤岛的总面积 孤岛的总面积 解题思路 知识点 心得 沉没孤岛 沉没孤岛 解题思路 知识点 心得 题目3 题目链接 解题思路 知识点 心得
阅读全文
摘要:岛屿数量 深搜 岛屿数量 解题思路 利用深度优先算法,先额外设置一个数组记录该节点是否遍历过,之后在回溯的过程中更改该数组的状态。对于题目来说,判断有没有一个海岛的方法就是有没有遇到1并把1周围所有的海岛区域遍历 知识点 dps 心得 学会了如何套用模板解题 岛屿数量 广搜 岛屿数量 广搜 解题思路
阅读全文
摘要:所有可达路径 所有可达路径 解题思路 使用深度优先算法进行遍历 知识点 深度优先 心得 深度优先也是回溯算法的一种
阅读全文
摘要:接雨水 接雨水 解题思路 跟昨天的单调栈不同,我们每次弹出时要保存弹出的值,并且和现在的栈顶值比较选出一个坐标对应的最大值,然后和当前值相减得到最大高度,然后再利用弹出的下标值求出宽度,最后的水滴格数就是w 乘以 h. 知识点 单调栈 心得 没有想到水滴格的求法,其余都写出来了。 柱状图中最大的矩形
阅读全文
摘要:每日温度 每日温度 解题思路 单调栈的意思其实是指栈内的元素单调递增/递减,我们可以通过这个特性存储元素的下标,然后每次入栈时与栈顶坐标的元素进行比较,如果小于等于就不需要弹出直接存入, 如果大于,则需要不断弹出栈顶直到遇到一个小于其的栈顶元素或者栈为空。 知识点 单调栈 心得 学会了如何写单调栈和
阅读全文
摘要:回文子串 回文子串 解题思路 dp数组的状态是判断以i结尾,j开始的字符串是否为回文,用bool类型存储,之后当i和j的字符串相等时,通过计算它们之间的距离和判断它们之间是否为回文串来进行递归。 知识点 回文,动态规划 心得 如果不看题解根本想不到怎么做 最长回文子序列 最长回文子序列 解题思路 遇
阅读全文
摘要:不同的子序列 不同的子序列 解题思路 dp数组的含义是两个分别以i-1结尾和j-1结尾相同的子序列的长度。也可以看作是每次删除s字符串的步数。这道题需要注意的是当两个字符相等时,别忘记加上dp[i-1][j]的值,因为如果前面有相同的字符,我们需要把这个次数加入到dp数组中 知识点 动态规划 心得
阅读全文
摘要:最长公共子序列 最长公共子序列 解题思路 本题dp数组的含义是最长公共序列,而后同时遍历两个字符串,遇到相同的字母是公共子序列+1,否则取两个字符串的公共子序列中较长的一个。 知识点 动态规划,子序列 心得 没有想到比较两个字符串的公共子序列。我自己是遇到相同字母时将所有后续的长度都设置为该长度,这
阅读全文
摘要:最长递增子序列 最长递增子序列 解题思路 dp数组代表着以nums[i]结尾的字符串的长度,因此我们要遍历nums[i]之前所有的数来找到其中的最长的递增子序列。每次遍历遇到递增时,对应的dp数组的值就+1. 知识点 动态规划,子序列 心得 没想到 最长连续递增序列 最长连续递增序列 解题思路 由于
阅读全文
摘要:买卖股票的最佳时机IV 买卖股票的最佳时机IV 解题思路 分别遍历2k + 1的状态得到结果 知识点 动态规划 心得 学会了三,四就好做了 最佳买卖股票时机含冷冻期 最佳买卖股票时机含冷冻期 解题思路 多了一个条件,就添加了许多状态 知识点 动态规划,股票 心得 买卖股票的最佳时机含手续费 买卖股票
阅读全文
摘要:买卖股票的最佳时机 买卖股票的最佳时机 解题思路 使用动态规划的思路解决,这类题目和之前做到过的所有动态规划相比有一定变化。在确定数组方面,这系列的题目都使用了二维数组来表示买卖股票的不同状态。在递归方面,本系列和小偷,背包等问题不同,它的状态递推关系也不是需要前两种系列的题目一样需要两个参数,因为
阅读全文
摘要:打家劫舍 打家劫舍 解题思路 动态规划解决问题,通过前两个值决定第三个值,需要注意的是初始值的选择,第二个的值是取前两个数中较大的,这样是为了保证跳过不需要取的值 知识点 动态规划 心得 初始值的选择没有考虑到,其余的都写出来了 打家劫舍 二 打家劫舍二 解题思路 前一题的改进,只需要分别对没有头元
阅读全文
摘要:零钱兑换 零钱兑换 解题思路 还是完全背包的套路,但这次我们要求的是最小值,因此每次遍历的时候我们要找到最小值,每次给dp增加的大小不在是物品的价值而是长度,所以+1。 知识点 完全背包 心得 难点在于怎么样找到最小值 完全平方数 [完全平方数 (https://programmercarl.com
阅读全文
摘要:完全背包 完全背包 解题思路 由于我们可以重复放入物体,那么在遍历背包重量时就必须从前往后遍历,因为这样就可以重复放入了,其余的部分和01背包相同 知识点 完全背包 心得 学会了如何解决纯完全背白 零钱兑换 II 零钱兑换 II 解题思路 和之前01背包求总数的思路相同,唯一的不同点在于要使用完全背
阅读全文
摘要:最后一块石头的重量 II 最后一块石头的重量 II 解题思路 把数组根据和拆分为两半,一半是dp[target],另一半是sum - dp[target]。随后利用背包问题的思路求得dp[target]。当设置dp数组容量时,应当为最大的数值。 知识点 背包问题 心得 没想到拆分的解法和正确设置dp
阅读全文

浙公网安备 33010602011771号