随笔分类 -  代码随想录

第37期训练营
摘要:98.所有可达路径 题目链接 文章讲解 邻接矩阵法 邻接矩阵使用二维数组来表示图结构。邻接矩阵是从节点的角度来表示图,有多少节点就申请多大的二维数组 为了节点标号和下标对其,有n个节点的图申请(n + 1) * (n + 1)的空间 vector<vector<int>> graph(n + 1, 阅读全文
posted @ 2024-07-06 14:20 深蓝von 阅读(6) 评论(0) 推荐(0) 编辑
摘要:42.接雨水 题目链接 文章讲解 视频讲解 思路找到当前柱子左边第一个比它高的和右边第一个比它高的柱子进行计算,右边第一个比它搞得柱子可以循环遍历得到,左边第一个比它高的柱子就是栈中下一个元素 class Solution { public: int trap(vector<int>& height 阅读全文
posted @ 2024-07-05 23:03 深蓝von 阅读(3) 评论(0) 推荐(0) 编辑
摘要:739.每日温度 题目链接 文章讲解 视频讲解 单调栈适合的场景:求当前元素左面或右面第一个比它大或小的元素 单调栈里存什么元素 只要存下标就可以了,比较元素时可以通过下标取元素 单调栈是单调增还是单调减(从栈顶到栈底) 使用单调增的单调栈 解题步骤: 遍历数组,当栈空时直接入栈 如果栈不空比较当前 阅读全文
posted @ 2024-07-05 22:12 深蓝von 阅读(3) 评论(0) 推荐(0) 编辑
摘要:647.回文子串 题目链接 文章讲解 视频讲解 动态规划法 动规五部曲: dp[i][j]: 表示区间范围[i, j]的字串是否是回文串 如果dp[i]表示下表为i的字符串有dp[i]个回文串的话,写不出递推公式,因为dp[i]和dp[i-1]没有什么关系,但如果已经知道i-j位置的字符串已经是回文 阅读全文
posted @ 2024-07-05 17:39 深蓝von 阅读(5) 评论(0) 推荐(0) 编辑
摘要:115.不同的子序列 题目链接 文章讲解 视频讲解 动规五部曲: dp[i][j]: 以i-1为结尾的s子序列中出现以j-1为结尾的t的个数为dp[i][j], 递推公式: s[i-1]与t[j-1]相等 需要是s[i-1]与t[j-1]匹配,那么个数为dp[i-1][j-1]即不需要考虑当前s子串 阅读全文
posted @ 2024-07-05 16:15 深蓝von 阅读(4) 评论(0) 推荐(0) 编辑
摘要:1143.最长公共子序列 题目链接 文章讲解 视频讲解 dp[i][j]: 表示以text1以i-1为结尾text2以j-1为结尾的最长公共子序列为dp[i][j] 递推公式:如果text1[i-1] == text2[j-1] 那么dp[i][j] = dp[i-1][j-1] + 1; 如果不相 阅读全文
posted @ 2024-07-04 22:56 深蓝von 阅读(5) 评论(0) 推荐(0) 编辑
摘要:300.最长递增子序列 题目链接 文章讲解 视频讲解 动规五部曲: dp[i]: 表示考虑元素i的最长子序列为dp[i] 递推公式:dp[i] = max(dp[j] + 1, dp[i]); 初始化:dp[i] = 1; 每个元素单独算一个子序列长度为1 遍历顺序:从前向后遍历 打印dp数组 cl 阅读全文
posted @ 2024-07-04 21:30 深蓝von 阅读(3) 评论(0) 推荐(0) 编辑
摘要:188.买卖股票的最佳时机IV 题目链接 文章讲解 视频讲解 动规五部曲: dp数组的含义: dp[j][2*i-1] 表示第i次持有股票 dp[j][2*i] 表示第i次不持有股票 递推公式: dp[j][2i-1] = max(dp[j-1][2i-1], dp[j-1][2*i-2] - pr 阅读全文
posted @ 2024-07-03 21:31 深蓝von 阅读(9) 评论(0) 推荐(0) 编辑
摘要:121.买卖股票的最佳时机 题目链接 文章讲解 视频讲解 动规五部曲: dp[j][0]: 表示持有股票的最大现金,dp[j][1]表示不持有股票的最大现金 递推公式: 第j天持有股票的最大现金为:之前就持有这只股票和今天持有这只股票取最大值: dp[j][0] = max(dp[j-1][0], 阅读全文
posted @ 2024-07-03 16:34 深蓝von 阅读(3) 评论(0) 推荐(0) 编辑
摘要:198.打家劫舍 题目链接 文章讲解 视频讲解 dp[j]: 表示投到第j家最多能偷dp[j]的钱 递推公式: dp[j] = max(dp[j-2] + nums[j], dp[j-1]) 初始化:dp[0] = nums[0], dp[1] = max(dp[0], dp[1]) 遍历顺序:从小 阅读全文
posted @ 2024-07-02 22:30 深蓝von 阅读(6) 评论(0) 推荐(0) 编辑
摘要:322.零钱兑换 题目链接 文章讲解 视频讲解 class Solution { public: int coinChange(vector<int>& coins, int amount) { // dp[j]: 表示能凑成面额j所需的最少硬币个数 vector<int> dp(amount + 阅读全文
posted @ 2024-07-02 18:13 深蓝von 阅读(8) 评论(0) 推荐(0) 编辑
摘要:完全背包 有N件物品和一个最多能被重量为W的背包,第i间物品的重量为weights[i],价值为value[i],每件物品都有无限个,求解将哪些物品装入背包里,物品价值总和最大 遍历顺序:纯完全背包问题(即求装满背包后的最大价值)先遍历背包先遍历物品都是可以的 和零一背包求解的最大不同就是遍历顺序, 阅读全文
posted @ 2024-07-01 17:46 深蓝von 阅读(5) 评论(0) 推荐(0) 编辑
摘要:1049.最后一块石头的重量 题目链接 文章讲解 视频讲解 解题思路: 将石头尽量分为相等的两堆,两堆最差即为所求结果 石头的重量就是石头的价值 动规五部曲: dp[j]:表示背包容量为j时可以装的石头的总价值 递推公式:dp[j] = max(dp[j], dp[j-stones[i]] + st 阅读全文
posted @ 2024-07-01 14:24 深蓝von 阅读(7) 评论(0) 推荐(0) 编辑
摘要:46.携带研究材料 二维数组 题目链接 文章讲解 视频讲解 动态规划五部曲: dp[i][j]:下标i表示背包装0-i的物品(任取),j表示当前背包的最大容量,dp[i][j]表示容量为j时,装0-i的物品的最大价值 递推公式:dp[i][j] = max(dp[i-1][j], dp[i-1][j 阅读全文
posted @ 2024-06-18 16:54 深蓝von 阅读(9) 评论(0) 推荐(0) 编辑
摘要:62.不同路径 题目链接 文章讲解 视频讲解 dp[i][j]: 到达(i, j)位置有多少种方法 递推公式:dp[i][j] = dp[i-1][j] + dp[i][j-1] 初始化dp[0][j] = 1只有向右一种走法, dp[i][0] = 1只有向下一种走法; 遍历顺序:从左向右 打印d 阅读全文
posted @ 2024-06-14 22:25 深蓝von 阅读(4) 评论(0) 推荐(0) 编辑
摘要:动态规划理论基础 509.斐波那契数 题目链接 文章讲解 视频讲解 确定dp[i]含义 dp[i]表示第i个斐波那契数的值 递推公式 dp[i] = dp[i - 1] + dp[i - 2] dp数组如何初始化 dp[0] = 1, dp[1] = 1 遍历顺序 从前向后 打印dp数组 class 阅读全文
posted @ 2024-06-14 15:29 深蓝von 阅读(7) 评论(0) 推荐(0) 编辑
摘要:56.合并区间 题目链接 文章讲解 视频讲解 思路: 按左区间排序; 遍历所有区间,如果当前区间的左边界小于等于上一个区间的右边界,则合并区间(新区间的左边界为上一个区间的左边界,新区间的右边界为上一个区间的有边界和当前区间有边界中较大的一个) class Solution { public: ve 阅读全文
posted @ 2024-06-13 22:35 深蓝von 阅读(6) 评论(0) 推荐(0) 编辑
摘要:406.根据身高重建队列 题目链接 文章讲解 视频讲解 思路: 先按照身高由大到小排序,如果身高相同,比较人数(由小到大); 按照人数重构数组,将节点插入到合适的位置 class Solution { private: static bool compareByK(vector<int>& lhs, 阅读全文
posted @ 2024-06-12 17:10 深蓝von 阅读(6) 评论(0) 推荐(0) 编辑
摘要:1005.K次取反后最大化的数组和 题目链接 文章讲解 视频讲解 思路: 按绝对值从大到小排序 遍历数组,遇到负数,如果次数未用完就取反 最后如果剩余次数未用完且为奇数就将数组最后一个元素取反 class Solution { static bool myCompare(const int& lhs 阅读全文
posted @ 2024-06-10 20:51 深蓝von 阅读(8) 评论(0) 推荐(0) 编辑
摘要:122.买卖股票的最佳时机II 题目链接 文章讲解 视频讲解 思路: 每次记录当天的股票价格,如果下一天比今天的价钱高那么今天就买,这样保证每一次买股票都是赚的 否则记录下一天的股票,因为下一天的股票比今天的便宜,下一天买比今天买划算 class Solution { public: int max 阅读全文
posted @ 2024-06-08 21:42 深蓝von 阅读(15) 评论(0) 推荐(0) 编辑

点击右上角即可分享
微信分享提示