算法之动态规划
qq_40373277
这个作者很懒,什么都没留下…
展开
-
动态规划—回文子串的问题
回文字串问题516. 最长回文子序列给定一个字符串s 找到其中最长的回文子序列 可以假设s的最大长度为1000 (注意这里的回文子序列不一定是连续的)n = len(s)dp = [[0] for _ in range(n)] for _ in range(n)] # dp[i][j] 表示第i个到第j个字符间的子序列的个数(i < j)for i in range(n): dp...原创 2019-04-01 18:40:16 · 119 阅读 · 0 评论 -
动态规划_股票问题详解
121 买卖股票的最佳时机描述:给定一个数组 它的第i个元素是一支给定股票第i天的价格如果你最多只允许完成一笔交易(即买入和卖出一支股票) 设计一个算法来计算你所能获取的最大利润注意你不能在买入股票前卖出股票min_p, max_p = 99999999, 0for i in range(len(prices)): min_p = min(min_p, prices[i]) max_...原创 2019-04-04 21:53:18 · 597 阅读 · 0 评论 -
39.组合总和
描述:给定一个无重复元素的数组 candidates 和一个目标数 target ,找出 candidates 中所有可以使数字和为 target 的组合。candidates 中的数字可以无限制重复被选取。class Solution(object): def combinationSum(self, candidates, target): """ ...原创 2019-03-31 21:54:43 · 76 阅读 · 0 评论 -
数组旋转矩阵
描述:给定一个包含 m x n 个元素的矩阵(m 行, n 列),请按照顺时针螺旋顺序,返回矩阵中的所有元素。r, i, j, di, dj = [], 0, 0, 0, 1 if matrix != []: for _ in range(len(matrix) * len(matrix[0])): r.append(mat...翻译 2019-04-05 21:52:26 · 386 阅读 · 0 评论 -
动态规划_最长子序列问题
53.最大子序和描述:给定一个整数数组 找到一个具有最大和的连续子数组(子数组最少包含一个元素) 返回其最大和if not nums: return 0dp = [nums[0]]# 设dp[i]表示以第i个元素为结尾的连续子数组的最大和 则递推方程式为dp[i] = max(dp[i - 1] + a[i], a[i])for i in range(1, len(nums)): d...原创 2019-04-01 18:40:34 · 192 阅读 · 0 评论 -
数组_旋转图像
旋转图像描述:给定一个n×n的二维矩阵表示一个图像将图像顺时针旋转90度n = len(matrix)for i in range(n): for j in range(i, n): matrix[i][j], matrix[j][i] = matrix[j][i], matrix[i][j] matrix[i].reverse()return matrix旋转矩阵# 将已...原创 2019-04-02 21:08:05 · 254 阅读 · 0 评论 -
动态规划_出界路径数
576. 出界的路径数描述:给定一个m×n的网格和一个球 球的起始坐标为(i, j) 你可以将球移动到相邻的单元格内 或者往上、下、左、右四个方向上移动使球穿过网格边界 但是 你最多可以移动N次 找出可以将球移出可以将球移动出边界的路径数量 答案可能非常大 返回结果 mod 10^9 +7的值memo = {}def helper(N, i, j): if (N, i, j) in mem...原创 2019-04-03 10:15:36 · 338 阅读 · 0 评论