数据结构与算法09-动态规划
文章平均质量分 53
动态规划
aolaf
这个作者很懒,什么都没留下…
展开
-
06 整数拆分(leecode 343)
1 问题给定一个正整数 n,将其拆分为至少两个正整数的和,并使这些整数的乘积最大化。返回你可以获得的最大乘积。示例 1: 输入: 2输出: 1解释: 2 = 1 + 1, 1 × 1 = 1。示例 2:输入: 10输出: 36解释: 10 = 3 + 3 + 4, 3 × 3 × 4 = 36。说明: 你可以假设 n 不小于 2 且不大于 58。2 解法class Solution {public: int integerBreak(int n) { vect原创 2021-02-24 19:55:29 · 103 阅读 · 0 评论 -
05 不同路径 II (leecode 63)
1 问题一个机器人位于一个 m x n 网格的左上角 (起始点在下图中标记为“Start” )。机器人每次只能向下或者向右移动一步。机器人试图达到网格的右下角(在下图中标记为“Finish”)。现在考虑网格中有障碍物。那么从左上角到右下角将会有多少条不同的路径?网格中的障碍物和空位置分别用 1 和 0 来表示。示例1:输入:obstacleGrid = [[0,0,0],[0,1,0],[0,0,0]]输出:2解释:3x3 网格的正中间有一个障碍物。从左上角到右下角一共有 2 条不同的路原创 2021-02-24 19:25:30 · 102 阅读 · 0 评论 -
04 不同路径 (leecode 62)
1 问题一个机器人位于一个 m x n 网格的左上角 (起始点在下图中标记为 “Start” )。机器人每次只能向下或者向右移动一步。机器人试图达到网格的右下角(在下图中标记为 “Finish” )。问总共有多少条不同的路径?输入:m = 3, n = 7输出:28示例 2:输入:m = 3, n = 2输出:3解释:从左上角开始,总共有 3 条路径可以到达右下角。向右 -> 向右 -> 向下向右 -> 向下 -> 向右向下 -> 向右 ->原创 2021-02-24 18:56:39 · 115 阅读 · 0 评论 -
03 使用最小花费爬楼梯 (leecode 746)
1 问题数组的每个下标作为一个阶梯,第 i 个阶梯对应着一个非负数的体力花费值 cost[i](下标从 0 开始)。每当你爬上一个阶梯你都要花费对应的体力值,一旦支付了相应的体力值,你就可以选择向上爬一个阶梯或者爬两个阶梯。请你找出达到楼层顶部的最低花费。在开始时,你可以选择从下标为 0 或 1 的元素作为初始阶梯。示例 1:输入:cost = [10, 15, 20] 输出:15 解释:最低花费是从 cost[1] 开始,然后走两步即可到阶梯顶,一共花费 15 。 示例 2:输入:cost =原创 2021-02-24 17:45:43 · 118 阅读 · 0 评论 -
02 爬楼梯 (leecode 70)
1 问题假设你正在爬楼梯。需要 n 阶你才能到达楼顶。每次你可以爬 1 或 2 个台阶。你有多少种不同的方法可以爬到楼顶呢?注意:给定 n 是一个正整数。示例 1:输入:2输出:2解释:有两种方法可以爬到楼顶。1 阶 + 1 阶2 阶示例 2:输入:3输出:3解释:有三种方法可以爬到楼顶。1 阶 + 1 阶 + 1 阶1 阶 + 2 阶2 阶 + 1 阶2 解法爬到第一层楼梯有一种方法,爬到二层楼梯有两种方法。那么第一层楼梯再跨两步就到第三层 ,第二层楼梯再跨一步就原创 2021-02-24 16:45:21 · 204 阅读 · 0 评论 -
01 斐波那契数 (leecode 509)
1 问题斐波那契数,通常用 F(n) 表示,形成的序列称为 斐波那契数列 。该数列由 0 和 1 开始,后面的每一项数字都是前面两项数字的和。也就是:F(0) = 0,F(1) = 1F(n) = F(n - 1) + F(n - 2),其中 n > 1给你n ,请计算 F(n) 。示例 1:输入:2输出:1解释:F(2) = F(1) + F(0) = 1 + 0 = 1示例 2:输入:3输出:2解释:F(3) = F(2) + F(1) = 1 + 1 = 2示例 3:输原创 2021-02-24 16:11:36 · 152 阅读 · 0 评论