动态规划dp
超喜欢榴莲吖
许愿未来温暖阳光,满身宠爱
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
337. 打家劫舍 III
题目树上DP。对于树的一个节点开始,它的子树可以盗取的最大金额由它的两个状态组成:该点被盗,记为f(i)该点不被盗,记为g(i)则 fff 和 ggg 由其左右节点的状态决定:f(i)=node.val+g(l)+g(r)f(i)=node.val+g(l)+g(r)f(i)=node.val+g(l)+g(r)g(i)=maxg(i)=maxg(i)=max{f(l),g(l)}+max\lbrace f(l),g(l)\rbrace+max{f(l),g(l)}+max{f(r),g原创 2020-08-05 09:32:23 · 205 阅读 · 0 评论 -
410. 分割数组的最大值
题目给定一个非负整数数组和一个整数 m,你需要将这个数组分成 m 个非空的连续子数组。设计一个算法使得这 m 个子数组各自和的最大值最小。注意:数组长度 n 满足以下条件:1 ≤ n ≤ 10001 ≤ m ≤ min(50, n)示例:输入: nums = [7,2,5,10,8] m = 2输出: 18很好的一道题,对于动态规划和二分查找都是比较经典的一种问法。<可惜菜菜子一个都没想到,还是要多练习才对啊(T_T)>方法一:动态规划「将数组分割为 m 段,求……」原创 2020-07-25 09:11:09 · 215 阅读 · 0 评论 -
leetcode动态规划——字符串系列
139. 单词拆分题目给定一个非空字符串 s 和一个包含非空单词列表的字典 wordDict,判定 s 是否可以被空格拆分为一个或多个在字典中出现的单词。说明:拆分时可以重复使用字典中的单词。你可以假设字典中没有重复的单词。示例 1:输入: s = “leetcode”, wordDict = [“leet”, “code”]输出: true解释: 返回 true因为 “leetcode” 可以被拆分成 “leet code”。示例 2:输入: s = “applepenapp原创 2020-07-19 15:38:37 · 988 阅读 · 0 评论 -
312. 戳气球
题目官方题解这道题的思路真的非常好,如果正向考虑戳破气球,最大的困难是这个气球戳破后要消除,然后继续判断。因此,选择逆向思考:从无到有,考虑最后一个戳破的球球是哪个。更直接的方法就是题解中给出的方法一,记忆化递归,就是完全按照上面的这种做法得到最终答案的,而动态规划将这种递归方式用方程式表达。class Solution {public: int maxCoins(vector<int>& nums) { int n=nums.size();原创 2020-07-19 09:55:23 · 125 阅读 · 0 评论 -
leetcode动态规划--滚动数组
题目给定三个字符串 s1, s2, s3, 验证 s3 是否是由 s1 和 s2 交错组成的。示例 1:输入: s1 = “aabcc”, s2 = “dbbca”, s3 = “aadbbcbcac”输出: true示例 2:输入: s1 = “aabcc”, s2 = “dbbca”, s3 = “aadbbbaccc”输出: false动态规划。(这道题用动态规划确实是没有想到的)f(i,j):s1的前i个元素和s2的前j个元素能否交错组成s3的前i+j个元素。f(i,j) =原创 2020-07-18 08:25:31 · 320 阅读 · 0 评论 -
leetcode 120. 三角形最小路径和
题目给定一个三角形,找出自顶向下的最小路径和。每一步只能移动到下一行中相邻的结点上。相邻的结点 在这里指的是下标 与 上一层结点下标 相同等于 上一层结点下标 + 1 的两个结点。例如,给定三角形:[[2],[3,4],[6,5,7],[4,1,8,3] ]这道题是很简单的一道DP题,这里主要是学习怎样将二维数组转化为一维数组。直接的二维DP:class Solution { public int minimumTotal(List<List<Integ原创 2020-07-14 22:39:08 · 125 阅读 · 0 评论 -
174. 地下城游戏
题目一些恶魔抓住了公主(P)并将她关在了地下城的右下角。地下城是由 M x N 个房间组成的二维网格。我们英勇的骑士(K)最初被安置在左上角的房间里,他必须穿过地下城并通过对抗恶魔来拯救公主。骑士的初始健康点数为一个正整数。如果他的健康点数在某一时刻降至 0 或以下,他会立即死亡。有些房间由恶魔守卫,因此骑士在进入这些房间时会失去健康点数(若房间里的值为负整数,则表示骑士将损失健康点数);其他房间要么是空的(房间里的值为 0),要么包含增加骑士健康点数的魔法球(若房间里的值为正整数,则表示骑士将增加健原创 2020-07-12 16:16:06 · 190 阅读 · 0 评论 -
leetcode股票系列
121. 买卖股票的最佳时机题目给定一个数组,它的第 i 个元素是一支给定股票第 i 天的价格。如果你最多只允许完成一笔交易(即买入和卖出一支股票一次),设计一个算法来计算你所能获取的最大利润。注意:你不能在买入股票前卖出股票。示例 1:输入: [7,1,5,3,6,4] 输出: 5 解释: 在第 2 天(股票价格 = 1)的时候买入,在第 5 天(股票价格 =6)的时候卖出,最大利润 = 6-1 = 5 。注意利润不能是 7-1 = 6, 因为卖出价格需要大于买入价格;同时,你不能在买入前原创 2020-07-10 20:08:30 · 800 阅读 · 0 评论
分享