![](https://img-blog.csdnimg.cn/20201014180756927.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
dp
卖山竹的山兔
这个作者很懒,什么都没留下…
展开
-
lc_dfs_688_knightProbability
题目:“马”在棋盘上的概率 middle 已知一个 NxN 的国际象棋棋盘,棋盘的行号和列号都是从 0 开始。即最左上角的格子记为 (0, 0),最右下角的记为 (N-1, N-1)。现有一个 “马”(也译作 “骑士”)位于 (r, c) ,并打算进行 K 次移动。如下图所示,国际象棋的 “马” 每一步先沿水平或垂直方向移动 2 个格子,然后向与之相垂直的方向再移动 1 个格子,共有 8 个可选的位置。 现在 “马” 每一步都从可选的位置(包括棋盘外部的)中独立随机地选择一个进行...原创 2020-06-23 14:54:07 · 95 阅读 · 0 评论 -
lc_dfs_139_wordBreak
题目:单词拆分给定一个非空字符串 s 和一个包含非空单词列表的字典 wordDict,判定 s 是否可以被空格拆分为一个或多个在字典中出现的单词。说明: 拆分时可以重复使用字典中的单词。 你可以假设字典中没有重复的单词。示例 1:输入: s = "leetcode", wordDict = ["leet", "code"]输出: true解释: 返回 true 因为 "leetcode" 可以被拆分成 "leet code"。示例 2:输入: s = "applepe...原创 2020-05-29 09:13:16 · 118 阅读 · 0 评论 -
lc_dp_123_maxProfit
结合链接理解:一个通用方法团灭 6 道股票问题题目:买卖股票的最佳时机 III hard给定一个数组,它的第 i 个元素是一支给定的股票在第 i 天的价格。设计一个算法来计算你所能获取的最大利润。你最多可以完成两笔交易。注意: 你不能同时参与多笔交易(你必须在再次购买前出售掉之前的股票)。示例 1:输入: [3,3,5,0,0,3,1,4]输出: 6解释: 在第 4 天(股票价格 = 0)的时候买入,在第 6 天(股票价格 = 3)的时候卖出, 这笔交易所能获得利润 = 3-...原创 2020-05-22 22:27:49 · 155 阅读 · 0 评论 -
lc_dp_121_maxProfit
题目: 买卖股票的最佳时机给定一个数组,它的第 i 个元素是一支给定股票第 i 天的价格。如果你最多只允许完成一笔交易(即买入和卖出一支股票一次),设计一个算法来计算你所能获取的最大利润。注意:你不能在买入股票前卖出股票。示例 1:输入: [7,1,5,3,6,4]输出: 5解释: 在第 2 天(股票价格 = 1)的时候买入,在第 5 天(股票价格 = 6)的时候卖出,最大利润 = 6-1 = 5 。 注意利润不能是 7-1 = 6, 因为卖出价格需要大于买入价格;同时,你不能...原创 2020-05-21 21:34:54 · 107 阅读 · 0 评论 -
lc_dp_120_minimumTotal
题目:三角形最小路径和 middle给定一个三角形,找出自顶向下的最小路径和。每一步只能移动到下一行中相邻的结点上。相邻的结点 在这里指的是下标与上一层结点下标相同或者等于上一层结点下标 + 1 的两个结点。例如,给定三角形:[ [2], [3,4], [6,5,7], [4,1,8,3]]自顶向下的最小路径和为 11(即,2 + 3 + 5 + 1 = 11)。说明:如果你可以只使用 O(n) 的额外空间(n 为三角形的总行数)来解决这个问题,那么你的...原创 2020-05-21 11:11:40 · 134 阅读 · 0 评论 -
lc_dp_96_numTrees
题目:不同的二叉搜索树 middle ,有点难,没做出来给定一个整数 n,求以 1 ... n 为节点组成的二叉搜索树有多少种?package leetCode.DP;public class lc_dp_96_numTrees {/*题目:不同的二叉搜索树 middle ,有点难,没做出来给定一个整数 n,求以 1 ... n 为节点组成的二叉搜索树有多少种?示例:输入: 3输出: 5解释:给定 n = 3, 一共有 5 种不同结构的二叉搜索树: 1 .原创 2020-05-20 16:59:31 · 107 阅读 · 0 评论 -
lc_dp_91_numDecodings
题目:解码方法 middle一条包含字母 A-Z 的消息通过以下方式进行了编码:'A' -> 1'B' -> 2...'Z' -> 26给定一个只包含数字的非空字符串,请计算解码方法的总数。示例 1:输入: "12"输出: 2解释: 它可以解码为 "AB"(1 2)或者 "L"(12)。示例 2:输入: "226"输出: 3解释: 它可以解码为 "BZ" (2 26), "VF" (22 6), 或者 "BBF" (2 2 6) 。思路:关..原创 2020-05-18 13:56:51 · 163 阅读 · 0 评论 -
lc_dp_70_climbStairs
题目:爬楼梯 simple假设你正在爬楼梯。需要 n 阶你才能到达楼顶。每次你可以爬 1 或 2 个台阶。你有多少种不同的方法可以爬到楼顶呢?注意:给定 n 是一个正整数。示例 1:输入: 2输出: 2解释: 有两种方法可以爬到楼顶。1. 1 阶 + 1 阶2. 2 阶示例 2:输入: 3输出: 3解释: 有三种方法可以爬到楼顶。1. 1 阶 + 1 阶 + 1 阶2. 1 阶 + 2 阶3. 2 阶 + 1 阶思路:关键字:计数,台阶--&g...原创 2020-05-18 00:15:48 · 95 阅读 · 0 评论 -
lc_dp_64_minPathSum
题目:最小路径和 middle给定一个包含非负整数的 m x n 网格,请找出一条从左上角到右下角的路径,使得路径上的数字总和为最小。说明:每次只能向下或者向右移动一步。示例:输入:[ [1,3,1], [1,5,1], [4,2,1]]输出: 7解释: 因为路径 1→3→1→1→1 的总和最小。package leetCode.DP;public class lc_dp_64_minPathSum {/*思路:关键字:最小、总和、网格--&g...原创 2020-05-17 22:50:34 · 102 阅读 · 0 评论 -
lc_dp_63_uniquePathsWithObstacles
题目:middle一个机器人位于一个 m x n 网格的左上角 (起始点在下图中标记为“Start” )。机器人每次只能向下或者向右移动一步。机器人试图达到网格的右下角(在下图中标记为“Finish”)。现在考虑网格中有障碍物。那么从左上角到右下角将会有多少条不同的路径?网格中的障碍物和空位置分别用 1 和 0 来表示。说明:m 和 n 的值均不超过 100。示例 1:输入:[ [0,0,0], [0,1,0], [0,0,0]]输出: 2解释:3x3 网格的正中...原创 2020-05-16 11:25:48 · 86 阅读 · 0 评论 -
lc_dp_62_uniquePaths
题目: 一个机器人位于一个 m x n 网格的左上角 (起始点在下图中标记为“Start” )。 机器人每次只能向下或者向右移动一步。机器人试图达到网格的右下角(在下图中标记为“Finish”)。 问总共有多少条不同的路径? 示例 1: 输入: m = 3, n = 2 输出: 3 解释: 从左上角开始,总共有 3 条路径可以到达右下角。 1. 向右 -> 向右 -> 向下 2. 向右 -> 向下 ...原创 2020-05-14 12:07:52 · 104 阅读 · 0 评论 -
lc_dp_53_maxSubArray
题目:最大子序和:simple 给定一个整数数组 nums ,找到一个具有最大和的连续子数组(子数组最少包含一个元素), 返回其最大和。 示例: 输入: [-2,1,-3,4,-1,2,1,-5,4], 输出: 6 解释: 连续子数组 [4,-1,2,1] 的和最大,为 6。 进阶: 如果你已经实现复杂度为 O(n) 的解法,尝试使用更为精妙的分治法求解。package leetCode.DP;public cla...原创 2020-05-13 15:20:48 · 98 阅读 · 0 评论 -
lc_dp_32_longestValidParentheses
题目:最长有效括号 difficult给定一个只包含 '(' 和 ')' 的字符串,找出最长的包含有效括号的子串的长度。示例 1:输入: "(()"输出: 2解释: 最长有效括号子串为 "()"示例 2:输入: ")()())"输出: 4解释: 最长有效括号子串为 "()()"package leetCode.DP;public class lc_dp_32_longestValidParentheses { /* 思路: 1)dp ...原创 2020-05-13 01:23:10 · 74 阅读 · 0 评论 -
lc_dp_10_regexMatch
题目:dif给你一个字符串 s 和一个字符规律 p,请你来实现一个支持 '.' 和 '*' 的正则表达式匹配。'.' 匹配任意单个字符'*' 匹配零个或多个前面的那一个元素所谓匹配,是要涵盖 整个 字符串 s的,而不是部分字符串。说明: s 可能为空,且只包含从 a-z 的小写字母。 p 可能为空,且只包含从 a-z 的小写字母,以及字符 . 和 *。示例 1:输入:s = "aa"p = "a"输出: false解释: "a" 无法匹配 "aa" 整个字符...原创 2020-05-12 13:18:55 · 118 阅读 · 0 评论 -
lc_dp_5_longestPalindrome
题目: 最长回文子串. 给定一个字符串 s,找到 s 中最长的回文子串。你可以假设 s 的最大长度为 1000。示例 1:输入: "babad"输出: "bab"注意: "aba" 也是一个有效答案。示例 2:输入: "cbbd"输出: "bb"package leetCode.DP;public class lc_dp_5_longestPalindrome { /* 思路: 1)暴力破解,复杂度太高,时间不通过 2)动态规划:基于暴...原创 2020-05-11 16:36:16 · 94 阅读 · 0 评论 -
lc_dp_279_numOfSquaresSum
package leetCode.DP;public class lc_dp_279_numOfSquaresSum { /* 给定正整数 n,找到若干个完全平方数(比如 1, 4, 9, 16, ...)使得它们的和等于 n。 你需要让组成和的完全平方数的个数最少。 示例 1: 输入: n = 12 输出: 3 解释: 12 = ...原创 2020-05-02 16:33:28 · 78 阅读 · 0 评论 -
lc_dp_1012_numDupDigitsAtMostN
package leetCode.DP;public class lc_1012_numDupDigitsAtMostN { /* 题目:给定正整数 N,返回小于等于 N 且具有至少 1 位重复数字的正整数。示例 1:输入:20输出:1解释:具有至少 1 位重复数字的正数(<= 20)只有 11 。示例 2:输入:100输出:10解释:具有至少 ...原创 2020-05-02 16:14:22 · 159 阅读 · 0 评论 -
lc_dp_46_permute
package leetCode.DP;import java.util.ArrayList;import java.util.List;class lc_dp_46_permute { /* 题目: 给定一个 没有重复 数字的序列,返回其所有可能的全排列。 示例: 输入: [1,2,3] 输出: ...原创 2020-05-02 16:32:11 · 83 阅读 · 0 评论