动态规划
earlene_wyl
这个作者很懒,什么都没留下…
展开
-
leetcode 42. 接雨水 hard
leetcode42. 接雨水 hard 题目描述:给定n 个非负整数表示每个宽度为 1 的柱子的高度图,计算按此排列的柱子,下雨之后能接多少雨水。上面是由数组 [0,1,0,2,1,0,1,3,2,1,2,1] 表示的高度图,在这种情况下,可以接 6 个单位的雨水(蓝色部分表示雨水)。感谢 Marcos 贡献此图。示例:输入: [0,1,0,2,1,...原创 2019-08-12 21:43:42 · 193 阅读 · 0 评论 -
leetcode 377. 组合总和 Ⅳ medium
leetcode377. 组合总和 Ⅳ medium 题目描述:解题思路:因为顺序不同的序列会被视作不同的组合,也就是求排列,所以不能用完全背包来求解(求组合数可以用完全背包),有些题解里说这是特殊的完全背包,我觉得好牵强啊因为完全背包求组合数的状态转移方程是 dp[n][v] = dp[n-1][v]+dp[n][v-nums[i]]。我们可以假设dp[n][v]表示用前n个nums【i】元素,目标和恰为v的排列数,但是 +dp[n][v-nums[i]...原创 2022-01-05 23:47:23 · 329 阅读 · 0 评论 -
leetcode 714. 买卖股票的最 佳时机含手续费 medium
leetcode714. 买卖股票的最佳时机含手续费 medium 题目描述:解题思路:手续费,可以在买入扣,也可以在卖出的时候扣,只不过应该是第0天初始化,而不再是第-1天。否则可能值越界,或者有别的什么问题,没想好 oRZ代码://class Solution {public: int maxProfit(vector<int>& prices, int fee) { if (prices.si...原创 2022-01-04 22:53:46 · 694 阅读 · 0 评论 -
leetcode 673. 最长递增子序列的个数 medium
leetcode673. 最长递增子序列的个数 medium 题目描述:解题思路:只想到了O(n^2)的 dp, 贪心的没想到,不过u1s1, 应该也不会考到代码:dp版//class Solution {public: int findNumberOfLIS(vector<int>& nums) { vector<int> dp_nums(nums.size(), 1); ...原创 2022-01-04 11:36:51 · 443 阅读 · 0 评论 -
leetcode 10. 正则表达式匹配 hard
leetcode10. 正则表达式匹配 hard题目描述:给你一个字符串s和一个字符规律p,请你来实现一个支持 '.'和'*'的正则表达式匹配。'.' 匹配任意单个字符'*' 匹配零个或多个前面的那一个元素所谓匹配,是要涵盖整个字符串s的,而不是部分字符串。示例 1:输入:s = "aa" p = "a"输出:false解释:"a" 无法匹配 "aa" 整个字符串。解题思路:dp 看题解吧代码:class Solution ...原创 2021-10-21 17:55:24 · 101 阅读 · 0 评论 -
剑指 Offer 14- I. 剪绳子
剑指 Offer 14- I. 剪绳子题目描述:给你一根长度为 n 的绳子,请把绳子剪成整数长度的 m 段(m、n都是整数,n>1并且m>1),每段绳子的长度记为 k[0],k[1]...k[m-1] 。请问 k[0]*k[1]*...*k[m-1] 可能的最大乘积是多少?例如,当绳子的长度是8时,我们把它剪成长度分别为2、3、3的三段,此时得到的最大乘积是18。示例 1:输入: 2输出: 1解释: 2 = 1 + 1, 1 × 1 = 1解题思路:这题用动态规原创 2021-10-20 20:47:18 · 90 阅读 · 0 评论 -
leetcode 322. 零钱兑换 medium
leetcode322. 零钱兑换 medium 题目描述:给定不同面额的硬币 coins 和一个总金额 amount。编写一个函数来计算可以凑成总金额所需的最少的硬币个数。如果没有任何一种硬币组合能组成总金额,返回-1。示例1:输入: coins = [1, 2, 5], amount = 11输出: 3解释: 11 = 5 + 5 + 1示例...原创 2019-08-16 20:14:17 · 149 阅读 · 0 评论 -
leetcode 518. 零钱兑换 II medium
leetcode518. 零钱兑换 IImedium 题目描述:给定不同面额的硬币和一个总金额。写出函数来计算可以凑成总金额的硬币组合数。假设每一种面额的硬币有无限个。示例 1:输入: amount = 5, coins = [1, 2, 5]输出: 4解释: 有四种方式可以凑成总金额:5=55=2+2+15=2+1+1+15=1+1+1+1+...原创 2019-08-16 21:18:49 · 242 阅读 · 0 评论 -
leetcode 55 && 45. 跳跃游戏(I II)
leetcode55. 跳跃游戏 medium 题目描述:给定一个非负整数数组,你最初位于数组的第一个位置。数组中的每个元素代表你在该位置可以跳跃的最大长度。判断你是否能够到达最后一个位置。示例1:输入: [2,3,1,1,4]输出: true解释: 从位置 0 到 1 跳 1 步, 然后跳 3 步到达最后一个位置。示例2:输入: ...原创 2019-08-17 01:17:29 · 164 阅读 · 0 评论 -
leetcode 53. 最大子序和 easy (重要)
leetcode53. 最大子序和 easy (重要) 题目描述:给定一个整数数组 nums,找到一个具有最大和的连续子数组(子数组最少包含一个元素),返回其最大和。示例:输入: [-2,1,-3,4,-1,2,1,-5,4],输出: 6解释:连续子数组[4,-1,2,1] 的和最大,为6。进阶:如果你已经实现复杂度为 O(n) 的解法,尝试使...原创 2019-08-17 15:07:13 · 148 阅读 · 0 评论 -
leetcode 152. 乘积最大子序列 medium
leetcode152. 乘积最大子序列 medium 题目描述:给定一个整数数组 nums,找出一个序列中乘积最大的连续子序列(该序列至少包含一个数)。示例 1:输入: [2,3,-2,4]输出: 6解释:子数组 [2,3] 有最大乘积 6。示例 2:输入: [-2,0,-1]输出: 0解释:结果不能为 2, 因为 [-2,-1] 不是...原创 2019-08-17 16:33:20 · 173 阅读 · 0 评论 -
leetcode 416 && 698. 分割等和子集 medium
leetcode416. 分割等和子集 medium 题目描述:给定一个只包含正整数的非空数组。是否可以将这个数组分割成两个子集,使得两个子集的元素和相等。注意:每个数组中的元素不会超过 100数组的大小不会超过 200示例 1:输入: [1, 5, 11, 5]输出: true解释: 数组可以分割成 [1, 5, 5] 和 [11]....原创 2019-08-17 16:54:53 · 240 阅读 · 0 评论 -
leetcode 139 && 140. 单词拆分(I II) medium
leetcode139. 单词拆分 medium 题目描述:给定一个非空字符串 s 和一个包含非空单词列表的字典 wordDict,判定s 是否可以被空格拆分为一个或多个在字典中出现的单词。说明:拆分时可以重复使用字典中的单词。你可以假设字典中没有重复的单词。示例 1:输入: s = "leetcode", wordDict = ["leet", "...原创 2019-08-18 00:32:50 · 239 阅读 · 0 评论 -
leetcode 647. 回文子串 medium
leetcode647. 回文子串 medium 题目描述:给定一个字符串,你的任务是计算这个字符串中有多少个回文子串。具有不同开始位置或结束位置的子串,即使是由相同的字符组成,也会被计为是不同的子串。示例 1:输入: "abc"输出: 3解释: 三个回文子串: "a", "b", "c".示例 2:输入: "aaa"输出: 6说明: 6个...原创 2019-08-18 15:05:43 · 118 阅读 · 0 评论 -
刷题(8)-01背包的两种初始化问题(4)
前段时间看DP中的01背包问题,大部分内容都好理解,网上也有很多关于这个问题的博客,但自己提出的问题没有得到解决,只好苦思冥想,以求进一步理解。 首先是问题描述:给定n种物品和一背包,物品i的重量是wi,其价值是pi,背包的容量是M,问如何选择装入背包中的物品总价值最大? 这里有两种情况一种是将背包恰好装满,一种是不要求恰好装满。解决这样的问题的方式就是通过设置初始化来解决...原创 2019-08-16 01:09:59 · 196 阅读 · 0 评论 -
字符串-最长公共子串(两个,多个)
关于暴力解和动规说的最好的https://www.cnblogs.com/ider/p/longest-common-substring-problem-optimization.html空间复杂度 O(1)还是左神的p225说的好。其实也没什么意思orz!问题:有两个字符串str1和str2,求出两个字符串中最长公共子串长度。暴力解:1)把str1和str2的所有子串都找到,然...原创 2019-07-16 01:40:45 · 8007 阅读 · 0 评论 -
刷题(8)-背包问题(3)
目录背包问题1. 01背包采用空间压缩的代码(且用方案二的初始化方法):2.完全背包代码:3.多重背包3.1 朴素办法:3.2利用二进制进行优化O(V*n*logn(i))代码:3.3单调队列优化4.混合背包代码5.二维费用的背包问题01背包的二维费用代码:6.分组的背包问题01背包的分组背包代码7.01背包问题求...原创 2019-08-16 18:45:26 · 600 阅读 · 0 评论 -
leetcode 300. 最长上升子序列 medium
leetcode300. 最长上升子序列 medium 题目描述:给定一个无序的整数数组,找到其中最长上升子序列的长度。示例:输入: [10,9,2,5,3,7,101,18]输出: 4解释: 最长的上升子序列是[2,3,7,101],它的长度是 4。说明:可能会有多种最长上升子序列的组合,你只需要输出对应的长度即可。你算法的时间复杂度应该为...原创 2019-08-15 22:46:50 · 150 阅读 · 0 评论 -
leetcode 72. 编辑距离 hard
leetcode72. 编辑距离 hard 题目描述:给定两个单词word1 和word2,计算出将word1转换成word2 所使用的最少操作数。你可以对一个单词进行如下三种操作:插入一个字符删除一个字符替换一个字符示例1:输入: word1 = "horse", word2 = "ros"输出: 3解释:horse ->...原创 2019-08-20 16:44:33 · 140 阅读 · 0 评论 -
剑指offer. 42 连续子数组的最大和(重要)
剑指offer. 42连续子数组的最大和(重要)题目描述:输入一个整形数组,数组里有正数和负数。数组中的一个或连续多个整数数组做成一个子数组。求所有子数组的和的最大值。要求时间复杂度为O(n),如:{1,-2,3,10,-4,7,2,-5}, 和最大的子数组是{3,10,-4,7,2},所以输出和 18解题思路:解法1:动态规划这种找子数组最优,一般解法是依次求以x...原创 2019-08-02 16:58:10 · 146 阅读 · 0 评论 -
leetcode 91. 解码方法 medium (对应剑指46)
leetcode91. 解码方法medium 题目描述:一条包含字母A-Z 的消息通过以下方式进行了编码:'A' -> 1'B' -> 2...'Z' -> 26给定一个只包含数字的非空字符串,请计算解码方法的总数。(注意可能是 10(代表1种解码方式),甚至100(0种解码方式))示例 1:输入: "12"输出: 2解释...原创 2019-08-02 22:47:22 · 359 阅读 · 0 评论 -
leetcode 64. 最小路径和 medium
leetcode64. 最小路径和 medium 题目描述:给定一个包含非负整数的 mxn网格,请找出一条从左上角到右下角的路径,使得路径上的数字总和为最小。说明:每次只能向下或者向右移动一步。示例:输入:[[1,3,1], [1,5,1], [4,2,1]]输出: 7解释: 因为路径 1→3→1→1→1 的总和最小。解题思...原创 2019-08-03 00:05:52 · 172 阅读 · 0 评论 -
leetcode 62. 不同路径 medium
leetcode 62. 不同路径 medium 题目描述:一个机器人位于一个 m x n 网格的左上角 (起始点在下图中标记为“Start” )。机器人每次只能向下或者向右移动一步。机器人试图达到网格的右下角(在下图中标记为“Finish”)。问总共有多少条不同的路径?解题思路:跟leetcode 64类似的题https://blog....原创 2019-08-03 00:05:37 · 107 阅读 · 0 评论 -
leetcode 63. 不同路径 II medium
leetcode63. 不同路径 II medium 题目描述:一个机器人位于一个 m x n 网格的左上角 (起始点在下图中标记为“Start” )。机器人每次只能向下或者向右移动一步。机器人试图达到网格的右下角(在下图中标记为“Finish”)。现在考虑网格中有障碍物。那么从左上角到右下角将会有多少条不同的路径?网格中的障碍物和空位置分别用 1 ...原创 2019-08-03 00:30:57 · 108 阅读 · 0 评论 -
刷题(8)-递归改动规(2)
怎么知道递归计算过程中存在计算重叠子问题:(下面的方法,我也似懂非懂,将就看吧)解答这个问题,最直观的应该是随便假设一个输入,然后画递归树,肯定是可以发现相同节点的。这属于定量分析,其实不用这么麻烦,下面我来教你定性分析,一眼就能看出「重叠子问题」性质。先拿最简单的斐波那契数列举例,我们抽象出递归算法的框架:def fib(n): fib(n - 1) fib(n...原创 2019-09-07 19:53:03 · 133 阅读 · 0 评论 -
刷题(8)-动态规划(1)
动态规划通过把原问题分解为相对简单的子问题的方式求解复杂问题的方法。动态规划常常适用于有重叠子问题和最优子结构性质的问题。基本思想若要解一个给定问题,我们需要解其不同部分(即子问题),再合并子问题的解以得出原问题的解。 通常许多子问题非常相似,为此动态规划法试图仅仅解决每个子问题一次,从而减少计算量: 一旦某个给定子问题的解已经算出,则将其记忆化存储,以便下次需要同一个子问题解之...原创 2019-09-07 19:52:07 · 401 阅读 · 0 评论 -
骰子游戏 (牛客)
骰子游戏牛客链接题目描述:小易参加了一个骰子游戏,这个游戏需要同时投掷n个骰子,每个骰子都是一个印有数字1~6的均匀正方体。小易同时投掷出这n个骰子,如果这n个骰子向上面的数字之和大于等于x,小易就会获得游戏奖励。小易想让你帮他算算他获得奖励的概率有多大。输入描述:输入包括两个正整数n和x(1 ≤ n < 25, 1 ≤ x < 150),分别表示骰子的个数...原创 2019-08-04 19:05:18 · 1447 阅读 · 0 评论 -
leetcode 121. 买卖股票的最1佳时机 easy
leetcode 121. 买卖股票的最佳时机easy 题目描述:给定一个数组,它的第i 个元素是一支给定股票第 i 天的价格。如果你最多只允许完成一笔交易(即买入和卖出一支股票),设计一个算法来计算你所能获取的最大利润。注意你不能在买入股票前卖出股票。示例 1:输入: [7,1,5,3,6,4]输出: 5解释: 在第 2 天(股票价格 = 1...原创 2019-08-05 00:52:39 · 118 阅读 · 0 评论 -
leetcode122. 买卖股票的最 佳时机 II easy
leetcode122. 买卖股票的最佳时机 II easy 题目描述:给定一个数组,它的第i 个元素是一支给定股票第 i 天的价格。设计一个算法来计算你所能获取的最大利润。你可以尽可能地完成更多的交易(多次买卖一支股票)。注意:你不能同时参与多笔交易(你必须在再次购买前出售掉之前的股票)。示例 1:输入: [7,1,5,3,6,4]输出: 7...原创 2019-08-05 00:52:52 · 195 阅读 · 0 评论 -
leetcode 123. 买卖股票的最 佳时机 III hard
leetcode123. 买卖股票的最佳时机 III hard 题目描述:给定一个数组,它的第 i 个元素是一支给定的股票在第 i 天的价格。设计一个算法来计算你所能获取的最大利润。你最多可以完成两笔交易。注意:你不能同时参与多笔交易(你必须在再次购买前出售掉之前的股票)。示例1:输入: [3,3,5,0,0,3,1,4]输出: 6解释: 在第 ...原创 2019-08-05 15:37:26 · 142 阅读 · 0 评论 -
leetcode 188. 买卖股票的最 佳时机 IV hard
leetcode188. 买卖股票的最佳时机 IV hard 题目描述:给定一个数组,它的第 i 个元素是一支给定的股票在第 i 天的价格。设计一个算法来计算你所能获取的最大利润。你最多可以完成 k 笔交易。注意:你不能同时参与多笔交易(你必须在再次购买前出售掉之前的股票)。解题思路:跟上一题leetcode123. 买卖股票的最佳时机3解法是一...原创 2019-08-05 16:30:43 · 175 阅读 · 0 评论 -
leetcode 309. 最 佳买卖股票时机含冷冻期 medium
leetcode309. 最佳买卖股票时机含冷冻期 medium 题目描述:给定一个整数数组,其中第i个元素代表了第i天的股票价格 。设计一个算法计算出最大利润。在满足以下约束条件下,你可以尽可能地完成更多的交易(多次买卖一支股票):你不能同时参与多笔交易(你必须在再次购买前出售掉之前的股票)。卖出股票后,你无法在第二天买入股票 (即冷冻期为 1...原创 2019-08-05 16:47:28 · 106 阅读 · 0 评论 -
leetcode 打家劫舍 系列(I II III )
leetcode198. 打家劫舍 easy 题目描述:你是一个专业的小偷,计划偷窃沿街的房屋。每间房内都藏有一定的现金,影响你偷窃的唯一制约因素就是相邻的房屋装有相互连通的防盗系统,如果两间相邻的房屋在同一晚上被小偷闯入,系统会自动报警。给定一个代表每个房屋存放金额的非负整数数组,计算你在不触动警报装置的情况下,能够偷窃到的最高金额。示例 1:输入: [1,2,...原创 2019-08-09 23:27:11 · 223 阅读 · 0 评论 -
leetcode 32. 最长有效括号 hard
leetcode32. 最长有效括号 hard 题目描述:给定一个只包含 '('和 ')'的字符串,找出最长的包含有效括号的子串的长度。示例1:输入: "(()"输出: 2解释: 最长有效括号子串为 "()"示例 2:输入: ")()())"输出: 4解释: 最长有效括号子串为 "()()"解题思路:方法一:nb解法一个括...原创 2019-08-20 01:29:55 · 197 阅读 · 0 评论 -
字符串-最长公共子序列(LCS)
找两个字符串的最长公共子串,这个子串要求在原字符串中是连续的。而最长公共子序列则并不要求连续。cnblogs与belong,最长公共子序列为blog(cnblogs, belong),最长公共子串为lo(cnblogs, belong)这两个问题都是用空间换空间,创建一个二维数组来记录之前的每个状态.最长公共子序列的状态转移方程:分析参考:https://www.cnbl...原创 2019-07-15 21:49:59 · 792 阅读 · 0 评论