摘要:"""123. 买卖股票的最佳时机 III给定一个数组,它的第 i 个元素是一支给定的股票在第 i 天的价格。设计一个算法来计算你所能获取的最大利润。你最多可以完成 两笔 交易。注意:你不能同时参与多笔交易(你必须在再次购买前出售掉之前的股票)。示例 1:输入:prices = [3,3,5,0,0
阅读全文
摘要:"""188. 买卖股票的最佳时机 IV给定一个整数数组 prices ,它的第 i 个元素 prices[i] 是一支给定的股票在第 i 天的价格。设计一个算法来计算你所能获取的最大利润。你最多可以完成 k 笔交易。注意:你不能同时参与多笔交易(你必须在再次购买前出售掉之前的股票)。示例 1:输入
阅读全文
摘要:"""剑指 Offer 63. 股票的最大利润假设把某股票的价格按照时间先后顺序存储在数组中,请问买卖该股票一次可能获得的最大利润是多少?示例 1:输入: [7,1,5,3,6,4]输出: 5解释: 在第 2 天(股票价格 = 1)的时候买入,在第 5 天(股票价格 = 6)的时候卖出,最大利润 =
阅读全文
摘要:"""309. 最佳买卖股票时机含冷冻期给定一个整数数组,其中第 i 个元素代表了第 i 天的股票价格 。设计一个算法计算出最大利润。在满足以下约束条件下,你可以尽可能地完成更多的交易(多次买卖一支股票):你不能同时参与多笔交易(你必须在再次购买前出售掉之前的股票)。卖出股票后,你无法在第二天买入股
阅读全文
摘要:"""输入: [[17,2,17],[16,16,5],[14,3,19]]输出: 10解释: 将 0 号房子粉刷成蓝色,1 号房子粉刷成绿色,2 号房子粉刷成蓝色。 最少花费: 2 + 5 + 3 = 10。解题思路:本题采用动态规划的方式,类似求两个字符串求最大公共子序列。其中,定义dp数组,表
阅读全文
摘要:"""N=7output=9N=3output=3"""def get_a(n_num): def dp(n, a_num, a_copy): if n <= 0 : return a_num return max( dp(n-1, a_num + 1, a_copy), dp(n-2, a_num
阅读全文
摘要:"""打家劫舍问题是一种典型的动态规划问题,按照房间的不同分布,其解法略有轻微的修改,下面分布以三个例子进行介绍1)房子在一字排开,首尾不相连2)房子成环形,首尾相连3)房子成树状结构""""""1)房子在一字排开,首尾不相连示例:输入:[1,2,3,1] output = 4输入:[2,7,9,3
阅读全文
摘要:"""博弈问题,也称为俩海盗分宝⽯,俩⼈拿硬币的问题,其解法也是动态规划dp数组的含义:dp[i][j].fir 表⽰,对于 piles[i...j] 这部分⽯头堆,先⼿能获得的最⾼分数。dp[i][j].sec 表⽰,对于 piles[i...j] 这部分⽯头堆,后⼿能获得的最⾼分数。举例理解⼀下
阅读全文
摘要:"""Longest Increasing Subsequence(LIS)单调递增子序列问题:给定一个无序的数组,求该数组中存在的最长的单调递增序列这是一种典型的动态规划问题,其中dp[i]表示num[i]对应的最长递增训练个数;base case:dp[i]=1,表示num[i]对应的最长递增子
阅读全文
摘要:"""最大子数组问题:首先,子数组存在连续的特性。同时,在求取最值问题方面,可以考虑动态规划解法。下面列举最大子数组问题。""""""问题1. 输入一个整数数组nums, 找出和最大的子数组,返回这个子数组的和解题思路:利用动态规划的解法,定义dp数组为:dp[i]为以num[i]为结尾的最大数组和
阅读全文
摘要:"""案例:给定不同面额的硬币和一个总金额,写出函数来计算可以凑成总金额的硬币组合数。假设每一种面额的硬币有无限个输入:amount=5, coins=[1,2,5]输出:4"""def make_the_change(coins, amount): dp = [[0 for i in range(
阅读全文
摘要:"""背包问题按照可选样本的数量有无限制,可分为0-1背包问题和完全背包问题。但是,不管0-1背包问题,还是完全背包问题他们的状态都是dp[i][j]表示前i个选择中,背包容量j的情况,选择:都是是否选择加入该i""""""0-1背包问题:给你⼀个可装载重量为 W 的背包和 N 个物品,每个物品有重
阅读全文
摘要:"""正则匹配问题"""def is_match_on_iteration(s1, pattern): if not s1: return not pattern first_match = s1 and (pattern[0] in {s1[0], '.'}) if len(pattern) >=
阅读全文
摘要:"""股票收益问题是一种典型的动态规划问题,其状态主要由:1)股票交易的时间;2)股票可交易的次数;3)股票当前的状态【买入、卖出及不变】组成, 例如:dp[3][2][1]的含义就是:今天是第三天,我现在⼿上持有着股票,⾄今最多进⾏ 2 次交易。再⽐如 dp[2][3][0] 的含义:今天是第⼆天
阅读全文
摘要:"""1143. 最长公共子序列给定两个字符串 text1 和 text2,返回这两个字符串的最长 公共子序列 的长度。如果不存在 公共子序列 ,返回 0 。一个字符串的 子序列 是指这样一个新的字符串:它是由原字符串在不改变字符的相对顺序的情况下删除某些字符(也可以不删除任何字符)后组成的新字符串
阅读全文
摘要:"""剑指 Offer II 095. 最长公共子序列给定两个字符串 text1 和 text2,返回这两个字符串的最长 公共子序列 的长度。如果不存在 公共子序列 ,返回 0 。一个字符串的 子序列 是指这样一个新的字符串:它是由原字符串在不改变字符的相对顺序的情况下删除某些字符(也可以不删除任何
阅读全文
摘要:"""44. 通配符匹配给定一个字符串 (s) 和一个字符模式 (p) ,实现一个支持 '?' 和 '*' 的通配符匹配。'?' 可以匹配任何单个字符。'*' 可以匹配任意字符串(包括空字符串)。两个字符串完全匹配才算匹配成功。说明:s 可能为空,且只包含从 a-z 的小写字母。p 可能为空,且只包
阅读全文
摘要:"""72. 编辑距离给你两个单词 word1 和 word2,请你计算出将 word1 转换成 word2 所使用的最少操作数 。你可以对一个单词进行如下三种操作:插入一个字符删除一个字符替换一个字符示例 1:输入:word1 = "horse", word2 = "ros"输出:3解释:hors
阅读全文
摘要:"""392. 判断子序列给定字符串 s 和 t ,判断 s 是否为 t 的子序列。字符串的一个子序列是原始字符串删除一些(也可以不删除)字符而不改变剩余字符相对位置形成的新字符串。(例如,"ace"是"abcde"的一个子序列,而"aec"不是)。进阶:如果有大量输入的 S,称作 S1, S2,
阅读全文
摘要:"""119. 杨辉三角 II给定一个非负索引 rowIndex,返回「杨辉三角」的第 rowIndex 行。在「杨辉三角」中,每个数是它左上方和右上方的数的和。示例 1:输入: rowIndex = 3输出: [1,3,3,1]示例 2:输入: rowIndex = 0输出: [1]示例 3:输入
阅读全文