动态规范DP
使用c++解决LeetCode中的动态规划相关问题
littleBoy777
这个作者很懒,什么都没留下…
展开
-
最长回文子序列和最长回文子序列
最长回文子序列给定一个字符串 s ,找到其中最长的回文子序列,并返回该序列的长度。可以假设 s 的最大长度为 1000 。示例 1:输入:“bbbab”输出:4一个可能的最长回文子序列为 “bbbb”。解法:(参考)与最长回文子串类似,都是从对角线往右上角更新。但是子序列可以不连续,所以递推公式是:当子序列的首位相等时->dp[i][j] = dp[i+1][j-1] + 2;当子序列的首位不同时->dp[i][j] = max(dp[i][j-1],dp[i+1]原创 2020-09-20 16:24:25 · 338 阅读 · 0 评论 -
123买卖股票的最佳时机 III
123买卖股票的最佳时机 III给定一个数组,它的第 i 个元素是一支给定的股票在第 i 天的价格。设计一个算法来计算你所能获取的最大利润。你最多可以完成 两笔 交易。注意: 你不能同时参与多笔交易(你必须在再次购买前出售掉之前的股票)。示例 1:输入: [3,3,5,0,0,3,1,4]输出: 6解释: 在第 4 天(股票价格 = 0)的时候买入,在第 6 天(股票价格 = 3)的...原创 2020-04-25 20:44:17 · 127 阅读 · 0 评论 -
122-股票的最大利润(可以多次买卖)
122股票的最大利润给定一个数组,它的第 i 个元素是一支给定股票第 i 天的价格。设计一个算法来计算你所能获取的最大利润。你可以尽可能地完成更多的交易(多次买卖一支股票)。注意:你不能同时参与多笔交易(你必须在再次购买前出售掉之前的股票)。Example 1:Input: [7,1,5,3,6,4]Output: 7Explanation: Buy on day 2 (p...原创 2020-04-24 17:49:37 · 1107 阅读 · 0 评论 -
买卖股票的最佳时机(只有一次)
121.买卖股票的最佳时机给定一个数组,它的第 i 个元素是一支给定股票第 i 天的价格。如果你最多只允许完成一笔交易(即买入和卖出一支股票一次),设计一个算法来计算你所能获取的最大利润。注意:你不能在买入股票前卖出股票。Example 1:Input: [7,1,5,3,6,4]Output: 5Explanation: Buy on day 2 (price = 1) and ...原创 2020-04-23 17:11:20 · 202 阅读 · 0 评论 -
337-打家劫舍3
337打家劫舍3在上次打劫完一条街道之后和一圈房屋后,小偷又发现了一个新的可行窃的地区。这个地区只有一个入口,我们称之为“根”。 除了“根”之外,每栋房子有且只有一个“父“房子与之相连。一番侦察之后,聪明的小偷意识到“这个地方的所有房屋的排列类似于一棵二叉树”。 如果两个直接相连的房子在同一天晚上被打劫,房屋将自动报警。计算在不触动警报的情况下,小偷一晚能够盗取的最高金额。示例 1:输入:...原创 2020-04-22 17:39:21 · 120 阅读 · 0 评论 -
213-打家劫舍 II
213-打家劫舍 II你是一个专业的小偷,计划偷窃沿街的房屋,每间房内都藏有一定的现金。这个地方所有的房屋都围成一圈,这意味着第一个房屋和最后一个房屋是紧挨着的。同时,相邻的房屋装有相互连通的防盗系统,如果两间相邻的房屋在同一晚上被小偷闯入,系统会自动报警。给定一个代表每个房屋存放金额的非负整数数组,计算你在不触动警报装置的情况下,能够偷窃到的最高金额。示例 1:输入: [2,3,2]输...原创 2020-04-21 20:40:30 · 114 阅读 · 0 评论 -
自底向上-打家劫舍
198.打家劫舍你是一个专业的小偷,计划偷窃沿街的房屋。每间房内都藏有一定的现金,影响你偷窃的唯一制约因素就是相邻的房屋装有相互连通的防盗系统,如果两间相邻的房屋在同一晚上被小偷闯入,系统会自动报警。给定一个代表每个房屋存放金额的非负整数数组,计算你在不触动警报装置的情况下,能够偷窃到的最高金额。示例 1:输入: [1,2,3,1]输出: 4解释: 偷窃 1 号房屋 (金额 = 1) ...原创 2020-04-20 20:49:46 · 116 阅读 · 1 评论 -
俄罗斯套娃问题
俄罗斯套娃问题给定一些标记了宽度和高度的信封,宽度和高度以整数对形式 (w, h) 出现。当另一个信封的宽度和高度都比这个信封大的时候,这个信封就可以放进另一个信封里,如同俄罗斯套娃一样。请计算最多能有多少个信封能组成一组“俄罗斯套娃”信封(即可以把一个信封放到另一个信封里面)。说明:不允许旋转信封。示例:输入: envelopes = [[5,4],[6,4],[...原创 2020-04-18 21:48:29 · 392 阅读 · 0 评论 -
图解鸡蛋掉落问题
鸡蛋掉落你将获得 K 个鸡蛋,并可以使用一栋从 1 到 N 共有 N 层楼的建筑。每个蛋的功能都是一样的,如果一个蛋碎了,你就不能再把它掉下去。你知道存在楼层 F ,满足 0 <= F <= N 任何从高于 F 的楼层落下的鸡蛋都会碎,从 F 楼层...原创 2020-04-17 21:09:53 · 562 阅读 · 0 评论 -
乘积最大子序列
乘积最大子序列Given an integer array nums, find the contiguous subarray within an array (containing at least one number) which has the largest product.Example 1:Input: [2,3,-2,4]Output: 6Explanation: [...原创 2020-04-16 20:21:54 · 163 阅读 · 0 评论 -
连续子数组的最大和
连续子数组的最大和Given an integer array nums, find the contiguous subarray (containing at least one number) which has the largest sum and return its sum.Example:Input: [-2,1,-3,4,-1,2,1,-5,4],Output: 6...原创 2020-04-15 21:34:59 · 154 阅读 · 0 评论 -
三角形最小路径和
三角形最小路径和给定一个三角形,找出自顶向下的最小路径和。每一步只能移动到下一行中相邻的结点上。例如,给定三角形:[ [2], [3,4], [6,5,7], [4,1,8,3]]自顶向下的最小路径和为 11(即,2 + 3 + 5 + 1 = 11)。说明:如果你可以只使用 O(n) 的额外空间(n 为三角形的总行数)来解决这个问题,那么你的算法...原创 2020-04-14 20:22:41 · 145 阅读 · 0 评论 -
最长公共子序列
最长公共子序列给定两个字符串 text1 和 text2,返回这两个字符串的最长公共子序列。一个字符串的 子序列 是指这样一个新的字符串:它是由原字符串在不改变字符的相对顺序的情况下删除某些字符(也可以不删除任何字符)后组成的新字符串。例如,“ace” 是 “abcde” 的子序列,但 “aec” 不是 “abcde” 的子序列。两个字符串的「公共子...原创 2020-04-13 21:10:24 · 218 阅读 · 0 评论 -
最长上升子序列(元素可以不连续)
最长上升子序列给定一个无序的整数数组,找到其中最长上升子序列的长度。示例:输入: [10,9,2,5,3,7,101,18]输出: 4 解释: 最长的上升子序列是 [2,3,7,101],它的长度是 4。说明:可能会有多种最长上升子序列的组合,你只需要输出对应的长度即可。你算法的时间复杂度应该为 O(n2) 。解法:题目中没有要求是连续的,可以有间隔,实例中[2,5,7,...原创 2020-04-12 21:37:00 · 304 阅读 · 0 评论