动态规划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 · 217 阅读 · 0 评论 -
410. 分割数组的最大值
题目 给定一个非负整数数组和一个整数 m,你需要将这个数组分成 m 个非空的连续子数组。设计一个算法使得这 m 个子数组各自和的最大值最小。 注意: 数组长度 n 满足以下条件: 1 ≤ n ≤ 1000 1 ≤ m ≤ min(50, n) 示例: 输入: nums = [7,2,5,10,8] m = 2 输出: 18 很好的一道题,对于动态规划和二分查找都是比较经典的一种问法。 <可惜菜菜子一个都没想到,还是要多练习才对啊(T_T)> 方法一:动态规划 「将数组分割为 m 段,求……」原创 2020-07-25 09:11:09 · 236 阅读 · 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 · 1014 阅读 · 0 评论 -
312. 戳气球
题目 官方题解 这道题的思路真的非常好,如果正向考虑戳破气球,最大的困难是这个气球戳破后要消除,然后继续判断。因此,选择逆向思考:从无到有,考虑最后一个戳破的球球是哪个。更直接的方法就是题解中给出的方法一,记忆化递归,就是完全按照上面的这种做法得到最终答案的,而动态规划将这种递归方式用方程式表达。 class Solution { public: int maxCoins(vector<int>& nums) { int n=nums.size();原创 2020-07-19 09:55:23 · 135 阅读 · 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 · 343 阅读 · 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 · 136 阅读 · 0 评论 -
174. 地下城游戏
题目 一些恶魔抓住了公主(P)并将她关在了地下城的右下角。地下城是由 M x N 个房间组成的二维网格。我们英勇的骑士(K)最初被安置在左上角的房间里,他必须穿过地下城并通过对抗恶魔来拯救公主。 骑士的初始健康点数为一个正整数。如果他的健康点数在某一时刻降至 0 或以下,他会立即死亡。 有些房间由恶魔守卫,因此骑士在进入这些房间时会失去健康点数(若房间里的值为负整数,则表示骑士将损失健康点数);其他房间要么是空的(房间里的值为 0),要么包含增加骑士健康点数的魔法球(若房间里的值为正整数,则表示骑士将增加健原创 2020-07-12 16:16:06 · 213 阅读 · 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 · 826 阅读 · 0 评论
分享