
动态规划
LeetCode刷题分类——动态规划
阿清~
这个作者很懒,什么都没留下…
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
《剑指offer》刷题系列——(六十七)把数字翻译成字符串
题目 给定一个数字,我们按照如下规则把它翻译为字符串:0 翻译成 “a” ,1 翻译成 “b”,……,11 翻译成 “l”,……,25 翻译成 “z”。一个数字可能有多个翻译。请编程实现一个函数,用来计算一个数字有多少种不同的翻译方法。 示例 1: 输入: 12258 输出: 5 解释: 12258有5种不同的翻译,分别是"bccfi", “bwfi”, “bczi”, “mcfi"和"mzi” 思路 动态规划思想 dp[i]表示s[0...i]字符串总共可以翻译的数量 初始状态: dp[0] = 1 d原创 2020-07-25 15:37:42 · 106 阅读 · 0 评论 -
《剑指offer》刷题系列——(六十二)n个骰子的点数
题目 把n个骰子扔在地上,所有骰子朝上一面的点数之和为s。输入n,打印出s的所有可能的值出现的概率。 你需要用一个浮点数数组返回答案,其中第 i 个元素代表这 n 个骰子所能掷出的点数集合中第 i 小的那个的概率。 输入: 2 输出: [0.02778,0.05556,0.08333,0.11111,0.13889,0.16667,0.13889,0.11111,0.08333,0.05556,0.02778] 思路 动态规划求解。 当有n个骰子时,点数和的最小值为n,最大值为n * 6。 创建一个n行6原创 2020-07-22 14:42:28 · 234 阅读 · 0 评论 -
《剑指offer》刷题系列——(六十)最长不含重复字符的子字符串
题目 请从字符串中找出一个最长的不包含重复字符的子字符串,计算该最长子字符串的长度。 示例 : 输入: “abcabcbb” 输出: 3 解释: 因为无重复字符的最长子串是 “abc”,所以其长度为 3。 思路 动态规划的思想 动态转移方程: dp[j]表示以第j个字符结尾的最长不含重复字符的子字符串 i 表示距离第j个字符最近的相同字符的索引 如果j-i > dp[j-1],说明s[i]在当前计算的最长子字符串范围之外,dp[j] = dp[j-1]+1 如果j-i <= dp[j-1],说原创 2020-07-21 11:53:41 · 147 阅读 · 0 评论 -
《剑指offer》刷题系列——(四十五)股票的最大利润
题目 假设把某股票的价格按照时间先后顺序存储在数组中,请问买卖该股票一次可能获得的最大利润是多少? 示例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。 思路 求第 i 天的最大利润dp[ i原创 2020-07-14 14:44:49 · 262 阅读 · 0 评论 -
《剑指offer》刷题系列——(四十四)剪绳子 II
题目 给你一根长度为 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。 答案需要取模 1e9+7(1000000007),如计算初始结果为:1000000008,请返回 1。 思路 在 剪绳子 I 的基础上增加取模操作即可。 代码 class Sol原创 2020-07-14 13:20:48 · 273 阅读 · 0 评论 -
《剑指offer》刷题系列——(四十三)剪绳子 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。 示例 : 输入: 2 输出: 1 解释: 2 = 1 + 1, 1 × 1 = 1 思路 定义函数f(n)为把长度为n的绳子剪成若干段后各段长度乘积的最大值。 初始化: n=1时,f(1原创 2020-07-14 11:30:41 · 121 阅读 · 0 评论 -
《剑指offer》刷题系列——(四十二)礼物的最大价值
题目 在一个 m*n 的棋盘的每一格都放有一个礼物,每个礼物都有一定的价值(价值大于 0)。你可以从棋盘的左上角开始拿格子里的礼物,并每次向右或者向下移动一格、直到到达棋盘的右下角。给定一个棋盘及其上面的礼物的价值,请计算你最多能拿到多少价值的礼物? 示例 : 输入: [ [1,3,1], [1,5,1], [4,2,1] ] 输出: 12 解释: 路径 1→3→5→2→1 可以拿到最多价值的礼物 思路 动态规划问题 首先申请一个与题目数组相同大小的二维空数组res。res中每个元素res[ i ] [ j原创 2020-07-13 17:24:05 · 145 阅读 · 0 评论 -
《剑指offer》刷题系列——(三十三)青蛙跳台阶问题
题目 一只青蛙一次可以跳上1级台阶,也可以跳上2级台阶。求该青蛙跳上一个 n 级的台阶总共有多少种跳法。 答案需要取模 1e9+7(1000000007),如计算初始结果为:1000000008,请返回 1。 示例: 输入:n = 2 输出:2 思路 动态规划 青蛙每次只能跳1个台阶或者2个台阶。 如果跳上 n 级台阶有 f(n)种跳法。 当最后一步跳 1级台阶时,总的跳法数为 f(n−1)种; 当最后一步跳 2级台阶时,总的跳法数为 f(n−2)种。 这道题可以转化为 斐波那契数列 问题,只需将初始值改为原创 2020-07-10 17:41:19 · 163 阅读 · 0 评论 -
《剑指offer》刷题系列——(七)连续子数组的最大和
题目 输入一个整型数组,数组里有正数也有负数。数组中的一个或连续多个整数组成一个子数组。求所有子数组的和的最大值。 要求时间复杂度为O(n)。 示例: 输入: nums = [1,-2,3,10,-4,7,2,5] 输出: 18 解释: 连续子数组 [3,10,-4,7,2] 的和最大,为 18。 思路 实例分析 测试用例 解法 复杂度分析 ...原创 2020-06-07 15:14:42 · 207 阅读 · 0 评论