动态规划
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] = 1d原创 2020-07-25 15:37:42 · 76 阅读 · 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 · 186 阅读 · 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 · 89 阅读 · 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 · 195 阅读 · 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 · 187 阅读 · 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 · 96 阅读 · 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 · 120 阅读 · 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 · 127 阅读 · 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 · 142 阅读 · 0 评论