
动态规划
C-Liueasymoney
这个作者很懒,什么都没留下…
展开
-
【LeetCode刷题笔记Java】42.接雨水
题目:给定 n 个非负整数表示每个宽度为 1 的柱子的高度图,计算按此排列的柱子,下雨之后能接多少雨水。示例:输入:height = [0,1,0,2,1,0,1,3,2,1,2,1]输出:6解释:上面是由数组 [0,1,0,2,1,0,1,3,2,1,2,1] 表示的高度图,在这种情况下,可以接 6 个单位的雨水(蓝色部分表示雨水)。暴力方法 public int trap(int[] height){ int result = 0; for (.原创 2021-06-24 09:53:56 · 152 阅读 · 0 评论 -
【LeetCode刷题笔记Java】96.不同的二叉搜索树
题目:给你一个整数 n ,求恰由 n 个节点组成且节点值从 1 到 n 互不相同的 二叉搜索树 有多少种?返回满足题意的二叉搜索树的种数。示例:输入:n = 3输出:5动态规划 public int numTrees(int n){ int[] dp = new int[n + 1]; dp[0] = 1; dp[1] = 1; for (int i = 2; i <= n; i++){ .原创 2021-06-23 09:41:22 · 176 阅读 · 0 评论 -
【LeetCode刷题笔记】72.编辑距离
题目:给你两个单词 word1 和 word2,请你计算出将 word1 转换成 word2 所使用的最少操作数 。你可以对一个单词进行如下三种操作:插入一个字符删除一个字符替换一个字符示例:输入:word1 = “horse”, word2 = “ros”输出:3解释:horse -> rorse (将 ‘h’ 替换为 ‘r’)rorse -> rose (删除 ‘r’)rose -> ros (删除 ‘e’)动态规划 public int mi.原创 2021-06-20 09:41:12 · 96 阅读 · 0 评论 -
【LeetCode刷题笔记】70.爬楼梯
题目:假设你正在爬楼梯。需要 n 阶你才能到达楼顶。每次你可以爬 1 或 2 个台阶。你有多少种不同的方法可以爬到楼顶呢?注意:给定 n 是一个正整数。示例:输入: 3输出: 3解释: 有三种方法可以爬到楼顶。1 阶 + 1 阶 + 1 阶1 阶 + 2 阶2 阶 + 1 阶动态规划由于到达n阶的前一步只有往上爬一层或两层,那么设dp[i]为爬到第i阶时的方法总数,可知dp[i]=dp[i-1]+dp[i-2]是一个斐波那契数列。 public int climb.原创 2021-06-19 08:56:08 · 201 阅读 · 0 评论 -
【LeetCode刷题笔记】64.最小路径和
题目:给定一个包含非负整数的 m x n 网格 grid ,请找出一条从左上角到右下角的路径,使得路径上的数字总和为最小。说明:每次只能向下或者向右移动一步。示例:输入:grid = [[1,3,1],[1,5,1],[4,2,1]]输出:7解释:因为路径 1→3→1→1→1 的总和最小。动态规划因为在当前格上只有可能从上面或者左边走来,因此只用考虑这两个位置上的总和即可。dp[i][j]表示走到第i行第j列的格子的最小路径和只要选择上面或者左边最小值再加上自身就是最小路径和(越界.原创 2021-06-18 23:30:06 · 128 阅读 · 0 评论 -
【LeetCode刷题笔记】62.不同路径
题目:一个机器人位于一个 m x n 网格的左上角 (起始点在下图中标记为 “Start” )。机器人每次只能向下或者向右移动一步。机器人试图达到网格的右下角(在下图中标记为 “Finish” )。问总共有多少条不同的路径?示例:输入:m = 3, n = 7输出:28动态规划由于机器人每步只能向下或者向右走一步,那么当前位置肯定是从上面或者左面走来的,可能路径也是二者之和。状态方程dp[i][j]代表到达第i行第j列位置上的所有路径可能之和。转移方程dp[i][j] = .原创 2021-06-17 20:20:53 · 113 阅读 · 0 评论 -
【LeetCode刷题笔记】53.最大子序和
题目:给定一个整数数组 nums ,找到一个具有最大和的连续子数组(子数组最少包含一个元素),返回其最大和。示例:输入:nums = [-2,1,-3,4,-1,2,1,-5,4]输出:6解释:连续子数组 [4,-1,2,1] 的和最大,为 6 。动态规划状态方程:dp[i]表示数组中到第i位时的最大子序和转移方程:dp[i]的值取决于数组第i位选择加入之前的子序列,还是从它开始重新创建一个子序列,这要看第i位的大小和之前的子序列和加上第i位的大小哪个更大。如果第i位加上了.原创 2021-06-15 18:19:36 · 130 阅读 · 0 评论 -
【LeetCode刷题笔记】32.最长有效括号
题目:给你一个只包含 ‘(’ 和 ‘)’ 的字符串,找出最长有效(格式正确且连续)括号子串的长度。示例:输入:s = “(()”输出:2解释:最长有效括号子串是 “()”动态规划 public int longestValidParentheses(String s){ if (s.length() == 0) return 0; int[] dp = new int[s.length()]; int re.原创 2021-06-10 09:58:02 · 192 阅读 · 0 评论 -
【LeetCode刷题笔记】10.正则表达式匹配
题目:给你一个字符串 s 和一个字符规律 p,请你来实现一个支持 ‘.’ 和 ‘’ 的正则表达式匹配。‘.’ 匹配任意单个字符'’ 匹配零个或多个前面的那一个元素所谓匹配,是要涵盖 整个 字符串 s的,而不是部分字符串。示例:输入:s = “aa” p = “a”输出:false解释:“a” 无法匹配 “aa” 整个字符串。 public boolean isMatch(String s, String p){// 空字符串可以匹配,所以需要建立length+1.原创 2021-06-07 18:48:41 · 137 阅读 · 0 评论 -
【LeetCode刷题笔记】5.最长回文子串
题目:给你一个字符串 s,找到 s 中最长的回文子串。示例:输入:s = “babad”输出:“bab”解释:“aba” 同样是符合题意的答案。动态规划 public String longestPalindrome(String s) { if (s.length() < 2) return s; boolean[][] dp = new boolean[s.length()][s.length()];// .原创 2021-06-05 16:45:43 · 117 阅读 · 0 评论