
动态规划
朱海涛的博客
你知道的越多,你不知道的越多
展开
-
每天一道算法题-动态规划-罗马数字转整数
题目:罗马数字包含以下七种字符:I,V,X,L,C,D和M。字符 数值I 1V 5X 10L 50C 100D 500M 1000例如, 罗马数字 2 写做II,即为两个并列的 1。12 写做XII,即为X+II。 27 写做XXVII, 即为XX+V+II...原创 2020-06-27 22:41:42 · 181 阅读 · 0 评论 -
每天一道算法题- 动态规划-连续子数组的最大值
题目:输入一个整型数组,数组里有正数也有负数。数组中的一个或连续多个整数组成一个子数组。求所有子数组的和的最大值。要求时间复杂度为O(n)。示例1:输入: nums = [-2,1,-3,4,-1,2,1,-5,4]输出: 6解释:连续子数组[4,-1,2,1] 的和最大,为6。程序:class Solution { public static int maxSubArray(int[] nums) { int res = nums[0];...原创 2020-06-26 12:38:31 · 327 阅读 · 0 评论 -
每天一道算法题-动态规划-股票的最大利润
题目描述:假设把某股票的价格按照时间先后顺序存储在数组中,请问买卖该股票一次可能获得的最大利润是多少?示例 1:输入: [7,1,5,3,6,4]输出: 5解释: 在第 2 天(股票价格 = 1)的时候买入,在第 5 天(股票价格 = 6)的时候卖出,最大利润 = 6-1 = 5 。 注意利润不能是 7-1 = 6, 因为卖出价格需要大于买入价格。示例 2:输入: [7,6,4,3,1]输出: 0解释: 在这种情况下, 没有交易完成, 所以最大利润为 0。分析:...原创 2020-06-26 11:47:35 · 840 阅读 · 0 评论 -
每天一道算法题-动态规划 单词分隔
给定一个非空字符串 s 和一个包含非空单词列表的字典 wordDict,判定s 是否可以被空格拆分为一个或多个在字典中出现的单词。说明:拆分时可以重复使用字典中的单词。你可以假设字典中没有重复的单词。示例 1:输入: s = "leetcode", wordDict = ["leet", "code"]输出: true解释: 返回 true 因为 "leetcode" 可以被拆分成 "leet code"。示例 2:输入: s = "applepenapple", wordDict .原创 2020-06-25 23:49:23 · 264 阅读 · 0 评论 -
每天一道算法题-动态规划求钢筋分割
Dynamic programming 动态规划,与分治法相似,都是通过组合子问题的解来求解原问题,但动态规划是应用于子问题重叠的场景,每个子问题都只求一遍,将解存入表格中,避免不必要的重复工作。问题:购买长钢条,将其切割为短钢条出售,不同长度的钢条对应不同的价格,希望得到最佳的切割方案使利润最大化。长度 i 1 2 3 4 5 6 7 8 9 10 价格 p 1 5 8 9 10 17 17原创 2020-06-22 15:07:52 · 585 阅读 · 1 评论