
leetcode高频问题-DP
AXIMI
这个作者很懒,什么都没留下…
展开
-
【leetcode高频问题-DP】70(Easy)Climbing Stairs
提交代码class Solution { public int climbStairs(int n) { if(n==0||n==1||n==2) return n; int[] ways = new int[n]; ways[0] = 1; ways[1] =2; for(int i=2;i<n;i++) ...原创 2019-12-07 17:58:49 · 115 阅读 · 0 评论 -
【leetcode高频问题-DP】72(Hard)Edit Distance
问题描述就是两个字符串word1和word2,通过加减、替换字母的方式,最少需要多少步可以从单词1变换到单词2解题思路假设两个字符串的长度分别为m和n,则创建长宽分别为m+1和n+1的二维数组对于第一个字符串中的第i个字符和第二个字符串中的第j个字符:当word1.charAt(i)==word2.charAt(j)时,dp[i+1][j+1]=dp[i][j]当word1.charA...原创 2019-12-05 21:06:23 · 146 阅读 · 0 评论 -
【leetcode高频问题-DP】95.(Medium)Unique Binary Search Trees II
题目描述给出数字n,要求返回所有1-n能能构成的二叉搜索树的根节点数组。用递归当输入为0时,输出是空数组提交代码class Solution { public List<TreeNode> generateTrees(int n) { if(n==0) return new ArrayList<TreeNode>(); re...原创 2019-12-03 20:43:22 · 164 阅读 · 0 评论 -
【leetcode高频问题-DP】10.(Hard) Regular Expression Matching
解题思路这是一道非常巧妙的DP题s是string一串字符串,p是pattern,是正则表达式模式。解题的方法是建立一个二维dp数组,分成、(0,0)单个空、第一行、第一列、其他这4个部分去搞。假设p的长度是m,s的长度是n,首先创建一个二维数组,长这个样子:位置1:空字符串"“和空模式”“匹配,直接是true位置2:字符串"mis"和空模式”“匹配,毫无疑问是false位置3:空字...原创 2019-11-25 18:27:58 · 198 阅读 · 0 评论 -
【leetcode高频问题-动态规划】85.(Hard) Maximal Rectangle
解题思路假设数组大小为m*n,数据如下:过程是:遍历整个数组,遍历的顺序是从上到下,一排一排的遍历。每遍历一排都要更新三个数组的数据,这三个数组分别是height[n], left[n], right[n]每遍历一排都通过更新后的height, left, right中的数据计算一遍是否存在更大的矩阵三个数组的含义如下:height[j]:遍历到某一行时,该行上连续的1的个数例如对...原创 2019-11-01 21:57:05 · 496 阅读 · 0 评论 -
【leetcode高频问题-DP】53.(Easy) Maximum Subarray
解题思路其实不用DP,用最简单的滑动窗口即可。提交代码class Solution { public int maxSubArray(int[] nums) { int curSum=nums[0],res=nums[0]; for(int i=1,len=nums.length;i<len;i++) { if(curSum+nums...原创 2019-10-31 19:55:49 · 150 阅读 · 0 评论