动态规划
月亮好像心动了❤️
这个作者很懒,什么都没留下…
展开
-
516. 最长回文子序列
给定一个字符串 s ,找到其中最长的回文子序列,并返回该序列的长度。可以假设 s 的最大长度为 1000 。 示例 1: 输入: "bbbab" 输出: 4 一个可能的最长回文子序列为 “bbbb”。 示例 2: 输入: "cbbd" 输出: 2 一个可能的最长回文子序列为 “bb”。 class Solution { // dp[i][j] = 字符串s下标i到j,最长的回文子序列 // dp[i][j] = dp[i+1][j-1] + 2 if c[i]==c[j] //原创 2020-12-14 00:23:16 · 131 阅读 · 0 评论 -
647. 回文子串
描述: 给定一个字符串,你的任务是计算这个字符串中有多少个回文子串。 具有不同开始位置或结束位置的子串,即使是由相同的字符组成,也会被视作不同的子串。 示例 1: 输入:"abc" 输出:3 解释:三个回文子串: "a", "b", "c" 示例 2: 输入:"aaa" 输出:6 解释:6个回文子串: "a", "a", "a", "aa", "aa", "aaa" class Solution { // dp[i][j] = 字符串s下标i到j是回文子串 // dp[i][j] = t原创 2020-12-13 23:43:13 · 114 阅读 · 0 评论 -
编辑距离
描述: 给定两个单词 word1 和 word2,计算出将 word1 转换成 word2 所使用的最少操作数 。 你可以对一个单词进行如下三种操作: 插入一个字符 删除一个字符 替换一个字符 示例 1: 输入: word1 = "horse", word2 = "ros" 输出: 3 解释: horse -> rorse (将 'h' 替换为 'r') rorse -> rose ...原创 2019-09-01 13:48:30 · 51 阅读 · 0 评论 -
戳气球
描述: 有 n 个气球,编号为0 到 n-1,每个气球上都标有一个数字,这些数字存在数组 nums 中。 现在要求你戳破所有的气球。每当你戳破一个气球 i 时,你可以获得 nums[left] * nums[i] * nums[right] 个硬币。 这里的 left 和 right 代表和 i 相邻的两个气球的序号。注意当你戳破了气球 i 后,气球 left 和气球 right 就变成了相邻的气...转载 2019-09-01 13:11:06 · 269 阅读 · 0 评论 -
不同的二叉搜索树
描述: 给定一个整数 n,求以 1 … n 为节点组成的二叉搜索树有多少种? 示例: 输入: 3 输出: 5 解释: 给定 n = 3, 一共有 5 种不同结构的二叉搜索树: 1 3 3 2 1 \ / / / \ \ 3 2 1 1 3 2 ...转载 2019-08-22 19:33:59 · 96 阅读 · 0 评论 -
最长回文子串
描述: 给定一个字符串 s,找到 s 中最长的回文子串。你可以假设 s 的最大长度为 1000。 示例 1: 输入: "babad" 输出: "bab" 注意: "aba" 也是一个有效答案。 示例 2: 输入: "cbbd" 输出: "bb" 思路分析: 1、求最值、使用动态规划 2、最后一步:找出最长的回文子串a[i…j 3、转移方程:f[ i ][ j ] = f[ i + 1][ ...原创 2019-08-12 22:26:48 · 76 阅读 · 0 评论 -
最佳买卖股票时机含冷冻期
描述: 给定一个整数数组,其中第 i 个元素代表了第 i 天的股票价格 。 设计一个算法计算出最大利润。在满足以下约束条件下,你可以尽可能地完成更多的交易(多次买卖一支股票): 你不能同时参与多笔交易(你必须在再次购买前出售掉之前的股票)。 卖出股票后,你无法在第二天买入股票 (即冷冻期为 1 天)。 示例: 输入: [1,2,3,0,2] 输出: 3 解释: 对应的交易状态为: [买入, 卖...原创 2019-08-25 16:07:18 · 196 阅读 · 0 评论 -
完全平方数
描述: 给定正整数 n,找到若干个完全平方数(比如 1, 4, 9, 16, …)使得它们的和等于 n。你需要让组成和的完全平方数的个数最少。 示例 1: 输入: n = 12 输出: 3 解释: 12 = 4 + 4 + 4. 示例 2: 输入: n = 13 输出: 2 解释: 13 = 4 + 9. 来源:力扣(LeetCode) 链接:完全平方数 思路分析: 1、标准的动态规划 f ...原创 2019-08-25 14:37:46 · 122 阅读 · 0 评论 -
单词拆分
给定一个非空字符串 s 和一个包含非空单词列表的字典 wordDict,判定 s 是否可以被空格拆分为一个或多个在字典中出现的单词。 说明: 拆分时可以重复使用字典中的单词。 你可以假设字典中没有重复的单词。 示例 1: 输入: s = "leetcode", wordDict = ["leet", "code"] 输出: true 解释: 返回 true 因为 "leetcode" 可以被拆分成...原创 2019-08-24 15:53:07 · 142 阅读 · 0 评论 -
打家劫舍
描述: 你是一个专业的小偷,计划偷窃沿街的房屋。每间房内都藏有一定的现金,影响你偷窃的唯一制约因素就是相邻的房屋装有相互连通的防盗系统,如果两间相邻的房屋在同一晚上被小偷闯入,系统会自动报警。 给定一个代表每个房屋存放金额的非负整数数组,计算你在不触动警报装置的情况下,能够偷窃到的最高金额。 示例 1: 输入: [1,2,3,1] 输出: 4 解释: 偷窃 1 号房屋 (金额 = 1) ,然后偷窃...原创 2019-08-10 01:36:00 · 59 阅读 · 0 评论 -
打家劫舍 III
描述: 在上次打劫完一条街道之后和一圈房屋后,小偷又发现了一个新的可行窃的地区。这个地区只有一个入口,我们称之为“根”。 除了“根”之外,每栋房子有且只有一个“父“房子与之相连。一番侦察之后,聪明的小偷意识到“这个地方的所有房屋的排列类似于一棵二叉树”。 如果两个直接相连的房子在同一天晚上被打劫,房屋将自动报警。 计算在不触动警报的情况下,小偷一晚能够盗取的最高金额。 示例 1: 输入: [3,2...原创 2019-08-10 01:07:48 · 149 阅读 · 0 评论 -
最长上升子序列
描述: 给定一个无序的整数数组,找到其中最长上升子序列的长度。 示例: 输入: [10,9,2,5,3,7,101,18] 输出: 4 解释: 最长的上升子序列是 [2,3,7,101],它的长度是 4。 思路: 动态规划常规分析: 1、对于动态规划,严格按照下列步骤进行分析: 1)、定义状态:通过分析最后一步、确定子问题(状态定义可能比较灵活,跟题意有出入) 2)、确定状态转移方程 3...原创 2019-08-09 18:28:13 · 109 阅读 · 0 评论