返回顶部

随笔分类 -  动态规划

动态规划(英语:Dynamic programming,简称 DP)是一种在数学、管理科学、计算机科学、经济学和生物信息学中使用的,通过把原问题分解为相对简单的子问题的方式求解复杂问题的方法。 动态规划常常适用于有重叠子问题和最优子结构性质的问题,动态规划方法所耗时间往往远少于朴素解法。 动态规划背后的基本思想非常简单。大致上,若要解一个给定问题,我们需要解其不同部分(即子问题),再根据子问题的解以得出原问题的解。动态规划往往用于优化递归问题,例如斐波那契数列,如果运用递归的方式来求解会重复计算很多相同的子问题,利用动态规划的思想可以减少计算量。 通常许多子问题非常相似,为此动态规划法试图仅仅解决每个子问题一次,具有天然剪枝的功能,从而减少计算量:一旦某个给定子问题的解已经算出,则将其记忆化存储,以便下次需要同一个子问题解之时直接查表。这种做法在重复子问题的数目关于输入的规模呈指数增长时特别有用。
摘要:给你两个单词 word1 和 word2, 请返回将 word1 转换成 word2 所使用的最少操作数 。 你可以对一个单词进行如下三种操作: 插入一个字符 删除一个字符 替换一个字符 示例1: 输入:word1 = "horse", word2 = "ros" 输出:3 解释: horse -> 阅读全文
posted @ 2023-05-09 00:58 Swetchine
摘要:1137. N-th Tribonacci Number Difficulty: 简单 The Tribonacci sequence Tn is defined as follows: T0 = 0, T1 = 1, T2 = 1, and Tn+3 = Tn + Tn+1 + Tn+2 for 阅读全文
posted @ 2021-07-17 23:42 Swetchine 阅读(57) 评论(0) 推荐(0)
摘要:509. Fibonacci Number Difficulty: 简单 The Fibonacci numbers, commonly denoted F(n) form a sequence, called the Fibonacci sequence, such that each numbe 阅读全文
posted @ 2021-07-17 02:28 Swetchine 阅读(53) 评论(0) 推荐(0)
摘要:303. 区域和检索 - 数组不可变 Difficulty: 简单 给定一个整数数组 nums,求出数组从索引 _i _到 _j _(i ≤ j) 范围内元素的总和,包含 _i, j _两点。 示例: 给定 nums = [-2, 0, 3, -5, 2, -1],求和函数为 sumRange() 阅读全文
posted @ 2020-07-15 22:07 Swetchine 阅读(153) 评论(0) 推荐(0)
摘要:53. 最大子序和 Difficulty: 简单 给定一个整数数组 nums ,找到一个具有最大和的连续子数组(子数组最少包含一个元素),返回其最大和。 示例: 输入: [-2,1,-3,4,-1,2,1,-5,4], 输出: 6 解释: 连续子数组 [4,-1,2,1] 的和最大,为 6。 进阶: 阅读全文
posted @ 2020-07-15 21:48 Swetchine 阅读(112) 评论(0) 推荐(0)
摘要:338. 比特位计数 Difficulty: 中等 给定一个非负整数 num。对于 0 ≤ i ≤ num 范围中的每个数字 **i **,计算其二进制数中的 1 的数目并将它们作为数组返回。 示例 1: 输入: 2 输出: [0,1,1] 示例 2: 输入: 5 输出: [0,1,1,2,1,2] 阅读全文
posted @ 2020-07-13 23:47 Swetchine 阅读(229) 评论(0) 推荐(0)
摘要:给定一个整数 n,求以 1 ... n 为节点组成的二叉搜索树有多少种? 示例: 输入: 3 输出: 5 解释: 给定 n = 3, 一共有 5 种不同结构的二叉搜索树: 1 3 3 2 1 \ / / / \ \ 3 2 1 1 3 2 / / \ \ 2 1 2 3 方法一:动态规划 代码: 1 阅读全文
posted @ 2020-04-15 21:00 Swetchine 阅读(182) 评论(0) 推荐(0)
摘要:一条包含字母 A-Z 的消息通过以下方式进行了编码: 'A' -> 1 'B' -> 2 ... 'Z' -> 26 给定一个只包含数字的非空字符串,请计算解码方法的总数。 示例 1: 输入: "12" 输出: 2 解释: 它可以解码为 "AB"(1 2)或者 "L"(12)。 示例 2: 输入: 阅读全文
posted @ 2020-04-11 16:36 Swetchine 阅读(199) 评论(0) 推荐(0)
摘要:给定一个包含非负整数的 m x n 网格,请找出一条从左上角到右下角的路径,使得路径上的数字总和为最小。 说明:每次只能向下或者向右移动一步。 示例: 1 输入: 2 [ 3 [1,3,1], 4 [1,5,1], 5 [4,2,1] 6 ] 7 输出: 7 8 解释: 因为路径 1→3→1→1→1 阅读全文
posted @ 2020-04-10 16:25 Swetchine 阅读(180) 评论(0) 推荐(0)
摘要:一个机器人位于一个 m x n 网格的左上角 (起始点在下图中标记为“Start” )。 机器人每次只能向下或者向右移动一步。机器人试图达到网格的右下角(在下图中标记为“Finish”)。 问总共有多少条不同的路径? 例如,上图是一个7 x 3 的网格。有多少可能的路径? 示例 1: 输入: m = 阅读全文
posted @ 2020-04-09 00:29 Swetchine 阅读(181) 评论(0) 推荐(0)
摘要:你是一个专业的小偷,计划偷窃沿街的房屋。每间房内都藏有一定的现金,影响你偷窃的唯一制约因素就是相邻的房屋装有相互连通的防盗系统,如果两间相邻的房屋在同一晚上被小偷闯入,系统会自动报警。 给定一个代表每个房屋存放金额的非负整数数组,计算你在不触动警报装置的情况下,能够偷窃到的最高金额。 示例 1: 输 阅读全文
posted @ 2020-03-05 16:33 Swetchine 阅读(179) 评论(0) 推荐(0)