随笔分类 - 算法训练营
每日打卡
摘要:LeetCode84. 柱状图中的最大的矩形 题目链接:84. 柱状图中的最大的矩形 独上高楼,望尽天涯路 感觉和接雨水很像。 慕然回首,灯火阑珊处 思路如下。 我们可以遍历每根柱子,以当前柱子 i 的高度作为矩形的高,那么矩形的宽度边界即为向左找到第一个高度小于当前柱体 i 的柱体,向右找到第一个
阅读全文
摘要:LeetCode503. 下一个更大元素II 题目链接:503. 下一个更大元素II 独上高楼,望尽天涯路 和昨天的那道题大部分是一个思路,对于循环数组,只需要遍历nums两遍即可。 class Solution { public: vector<int> nextGreaterElements(v
阅读全文
摘要:LeetCode739. 每日温度 题目链接:739. 每日温度 独上高楼,望尽天涯路 直接看题解。 慕然回首,灯火阑珊处 单调栈一般用来解决一维数组,任意一个元素的右边或者左边第一个比自己大或者小的元素。本质上是用空间换时间,用一个栈来记录我们遍历过的元素。 class Solution { pu
阅读全文
摘要:LeetCode647. 回文子串 题目链接:647. 回文子串 独上高楼,望尽天涯路 直接看题解。 慕然回首,灯火阑珊处 首先是确定dp数组以及下标的含义。 布尔类型的dp[i][j]:表示区间范围[i,j](注意是左闭右闭)的子串是否是回文子串,如果是dp[i][j]为true,否则为false
阅读全文
摘要:LeetCode583. 两个字符串的删除工作 题目链接:583. 两个字符串的删除工作 独上高楼,望尽天涯路 突然感觉有那么一点开窍了,可以照猫画虎了。 class Solution { public: int minDistance(string word1, string word2) { v
阅读全文
摘要:LeetCode392. 判断子序列 题目链接:392. 判断子序列 独上高楼,望尽天涯路 只有暴力解法的思路。 慕然回首,灯火阑珊处 首先是dp数组以及下标的含义。 dp[i][j]:长度为[0, i - 1]的字符串text1与长度为[0, j - 1]的字符串text2的最长公共子序列长度为d
阅读全文
摘要:LeetCode1143. 最长公共子序列 题目链接:1143. 最长公共子序列 独上高楼,望尽天涯路 和之前那道题思路又不太一样了,第一次接触还是挺难想出来的。 慕然回首,灯火阑珊处 首先是dp数组以及下标的含义。 dp[i][j]:长度为[0, i - 1]的字符串text1与长度为[0, j
阅读全文
摘要:LeetCode300. 最长递增子序列 题目链接:300. 最长递增子序列 独上高楼,望尽天涯路 感觉和之前的动态规划思路还不一样,没有想出好的递推公式。 慕然回首,灯火阑珊处 解决这道题的重点在于将dp数组设置为:dp[i]表示i之前包括i的以nums[i]结尾的最长递增子序列的长度。 为什么一
阅读全文
摘要:股票买卖问题猪脑过载了,挖个坑,二刷来填。
阅读全文
摘要:股票买卖问题猪脑过载了,挖个坑,二刷来填。
阅读全文
摘要:LeetCode121. 买卖股票的最佳时机 题目链接:121. 买卖股票的最佳时机 独上高楼,望尽天涯路 感觉贪心会更简单,动态规划反而搞复杂了对于这道题。 慕然回首,灯火阑珊处 第一次看题解还是挺难理解的,所以这次写的规范一点。 确定dp数组及其下标的含义 dp[i][0]表示的是第i天持有股票
阅读全文
摘要:LeetCode198. 打家劫舍 题目链接:198. 打家劫舍 独上高楼,望尽天涯路 dp[i]表示的是偷窃0-i房屋所能获得的最大金额。 class Solution { public: int rob(vector<int>& nums) { if (nums.size() == 1) ret
阅读全文
摘要:LeetCode139. 单词拆分 题目链接:139. 单词拆分 独上高楼,望尽天涯路 没什么思路。 慕然回首,灯火阑珊处 挖个坑,二刷的时候填。 class Solution { public: bool wordBreak(string s, vector<string>& wordDict)
阅读全文
摘要:LeetCode70. 爬楼梯(进阶) 题目链接:70. 爬楼梯(进阶) 独上高楼,望尽天涯路 可以把爬楼梯看成是一个排序问题加完全背包。 class Solution { public: int climbStairs(int n) { vector<int> stairs = {1, 2}; v
阅读全文
摘要:LeetCode518. 零钱兑换II 题目链接:518. 零钱兑换II 独上高楼,望尽天涯路 组合问题和完全背包的混合应用,感觉脑中模拟的不是很清晰,但是靠着背包问题的代码技巧和模板就能比较容易的ac,玄学起来了。 class Solution { public: int change(int a
阅读全文
摘要:LeetCode1049. 最后一块石头的重量II 题目链接:1049. 最后一块石头的重量II 独上高楼,望尽天涯路 一开始还是没有想到怎么转化成01背包问题,所以直接看题解找思路 慕然回首,灯火阑珊处 本题其实就是尽量让石头分成重量相同的两堆,相撞之后剩下的石头最小,这样就化解成01背包问题了。
阅读全文
摘要:LeetCode416. 分割等和子集 题目链接:416. 分割等和子集 独上高楼,望尽天涯路 一开始没有想到怎么转化成01背包问题,所以直接看题解找思路 慕然回首,灯火阑珊处 背包的体积为sum / 2 背包要放入的商品(集合里的元素)重量为 元素的数值,价值也为元素的数值 背包如果正好装满,说明
阅读全文
摘要:LeetCode343. 整数拆分 题目链接:343. 整数拆分 独上高楼,望尽天涯路 一开始想到的是用数学证明化简的方法,每次拆成尽可能多的3,最后剩下的是2或4,此时相乘最大。 class Solution { public: int integerBreak(int n) { if (n ==
阅读全文
摘要:LeetCode62. 不同路径 题目链接:62. 不同路径 独上高楼,望尽天涯路 第一次接触二维的dp数组,初始化会麻烦一点,dp数组表示的是机器人移动到第i行第j列格子的所有路径数。 class Solution { public: int uniquePaths(int m, int n) {
阅读全文
摘要:动态规划理论基础 动态规划的解题步骤。 确定dp数组(dp table)以及下标的含义 确定递推公式 dp数组如何初始化 确定遍历顺序 举例推导dp数组 LeetCode509. 斐波那契数 题目链接:509. 斐波那契数 独上高楼,望尽天涯路 刚接触动态规划,学习为主,直接看题解视频。 慕然回首,
阅读全文

浙公网安备 33010602011771号