LeetCode-DP
小晒y
这个作者很懒,什么都没留下…
展开
-
LeetCode-DP专题-整数拆分
题目描述:给定一个正整数 n,将其拆分为至少两个正整数的和,并使这些整数的乘积最大化。 返回你可以获得的最大乘积。示例示例 1:输入: 2输出: 1解释: 2 = 1 + 1, 1 × 1 = 1。示例 2:输入: 10输出: 36解释: 10 = 3 + 3 + 4, 3 × 3 × 4 = 36。解答:class Solution {public: int integerBreak(int n) { int dp[62]; dp[原创 2021-03-17 17:03:35 · 95 阅读 · 0 评论 -
LeetCode-DP专题-等差数列划分
题目描述:如果一个数列至少有三个元素,并且任意两个相邻元素之差相同,则称该数列为等差数列。例如,以下数列为等差数列:1, 3, 5, 7, 97, 7, 7, 73, -1, -5, -9以下数列不是等差数列。1, 1, 2, 5, 7数组 A 包含 N 个数,且索引从0开始。数组 A 的一个子数组划分为数组 (P, Q),P 与 Q 是整数且满足 0<=P<Q<N 。如果满足以下条件,则称子数组(P, Q)为等差数组:元素 A[P], A[p + 1], …, A[Q原创 2021-03-08 14:20:23 · 118 阅读 · 0 评论 -
LeetCode-DP专题-两个字符串的最小ASCII删除和
题目描述:给定两个字符串s1, s2,找到使两个字符串相等所需删除字符的ASCII值的最小和。示例示例 1:输入: s1 = “sea”, s2 = “eat”输出: 231解释: 在 “sea” 中删除 “s” 并将 “s” 的值(115)加入总和。在 “eat” 中删除 “t” 并将 116 加入总和。结束时,两个字符串相等,115 + 116 = 231 就是符合条件的最小和。示例 2:输入: s1 = “delete”, s2 = “leet”输出: 403解释: 在原创 2021-03-08 13:32:21 · 73 阅读 · 0 评论 -
LeetCode-DP专题-统计全为 1 的正方形子矩阵
题目描述:给你一个 m * n 的矩阵,矩阵中的元素不是 0 就是 1,请你统计并返回其中完全由 1 组成的 正方形 子矩阵的个数。示例示例 1:输入:matrix =[[0,1,1,1],[1,1,1,1],[0,1,1,1]]输出:15解释:边长为 1 的正方形有 10 个。边长为 2 的正方形有 4 个。边长为 3 的正方形有 1 个。正方形的总数 = 10 + 4 + 1 = 15.示例 2:输入:matrix =[[1,0,1],[1,1,0],[1原创 2021-03-07 13:07:30 · 69 阅读 · 0 评论 -
LeetCode-DP专题-统计字典序元音字符串的数目
题目描述:给你一个整数 n,请返回长度为 n 、仅由元音 (a, e, i, o, u) 组成且按 字典序排列 的字符串数量。字符串 s 按 字典序排列 需要满足:对于所有有效的 i,s[i] 在字母表中的位置总是与 s[i+1] 相同或在 s[i+1] 之前。链接:https://leetcode-cn.com/problems/count-sorted-vowel-strings示例示例 1:输入:n = 1输出:5解释:仅由元音组成的 5 个字典序字符串为 [“a”,“e”,“i”,原创 2021-03-05 13:14:13 · 150 阅读 · 0 评论 -
LeetCode-DP专题-比特位计数
题目描述:给定一个非负整数 num。对于 0 ≤ i ≤ num 范围中的每个数字 i ,计算其二进制数中的 1 的数目并将它们作为数组返回。示例示例 1:输入: 2输出: [0,1,1]示例 2:输入: 5输出: [0,1,1,2,1,2]解答:class Solution {public: vector<int> countBits(int num) { vector<int>dp; dp.push_back(原创 2021-03-05 10:39:20 · 100 阅读 · 1 评论 -
LeetCode-DP专题-三步问题
题目描述:三步问题。有个小孩正在上楼梯,楼梯有n阶台阶,小孩一次可以上1阶、2阶或3阶。实现一种方法,计算小孩有多少种上楼梯的方式。结果可能很大,你需要对结果模1000000007。链接:https://leetcode-cn.com/problems/three-steps-problem-lcci示例示例 1:输入:n = 3输出:4说明: 有四种走法示例 2:输入:n = 5输出:13解答:class Solution {public: int waysToS原创 2021-03-03 15:14:07 · 107 阅读 · 1 评论 -
LeetCode-DP专题-连续子数组的最大和
题目描述:输入一个整型数组,数组中的一个或连续多个整数组成一个子数组。求所有子数组的和的最大值。要求时间复杂度为O(n)。链接:https://leetcode-cn.com/problems/min-cost-climbing-stairs示例示例 1:输入: nums = [-2,1,-3,4,-1,2,1,-5,4]输出: 6解释: 连续子数组 [4,-1,2,1] 的和最大,为 6。解答:class Solution {public: int maxSubArray原创 2021-03-03 14:39:59 · 75 阅读 · 1 评论 -
LeetCode-DP专题-使用最小花费爬楼梯
题目描述:数组的每个下标作为一个阶梯,第 i 个阶梯对应着一个非负数的体力花费值 cost[i](下标从 0 开始)。每当你爬上一个阶梯你都要花费对应的体力值,一旦支付了相应的体力值,你就可以选择向上爬一个阶梯或者爬两个阶梯。请你找出达到楼层顶部的最低花费。在开始时,你可以选择从下标为 0 或 1 的元素作为初始阶梯。链接:https://leetcode-cn.com/problems/min-cost-climbing-stairs示例示例 1:输入:cost = [10, 15, 20原创 2021-03-03 14:31:58 · 83 阅读 · 0 评论 -
LeetCode-DP专题-买卖股票的最佳时机
题目描述:给定一个数组 prices ,它的第 i 个元素 prices[i] 表示一支给定股票第 i 天的价格。你只能选择 某一天 买入这只股票,并选择在 未来的某一个不同的日子 卖出该股票。设计一个算法来计算你所能获取的最大利润。返回你可以从这笔交易中获取的最大利润。如果你不能获取任何利润,返回 0 。链接:https://leetcode-cn.com/problems/best-time-to-buy-and-sell-stock示例示例 1:输入:[7,1,5,3,6,4]输出:原创 2021-03-03 13:54:56 · 81 阅读 · 0 评论 -
LeetCode-DP专题-按摩师
题目描述:一个有名的按摩师会收到源源不断的预约请求,每个预约都可以选择接或不接。在每次预约服务之间要有休息时间,因此她不能接受相邻的预约。给定一个预约请求序列,替按摩师找到最优的预约集合(总预约时间最长),返回总的分钟数。链接:https://leetcode-cn.com/problems/the-masseuse-lcci示例示例 1:输入: [1,2,3,1]输出: 4解释: 选择 1 号预约和 3 号预约,总时长 = 1 + 3 = 4。示例 2:输入: [2,7,9,3,1原创 2021-03-03 12:52:04 · 124 阅读 · 0 评论