随笔分类 - 动态规划DP
摘要:300. 最长递增子序列 题目描述 方法一:动态规划 与53. 最大子数组和 + 动态规划 + 线段树 问题类似,本题属于子序列问题的一种。 问题的关键是定义好dp动态方程,类似于LeetCode-53题目,我们假设dp[i]表示i结尾的递增子序列的长度。 对于状态转移方程,我们可以这样考虑:因为是
阅读全文
摘要:题目来源 LeetCode_42 给定 n 个非负整数表示每个宽度为 1 的柱子的高度图,计算按此排列的柱子,下雨之后能接多少雨水。 题目详情 示例 1: 输入: height = [0,1,0,2,1,0,1,3,2,1,2,1] 输出: 6 解释: 上面是由数组 [0,1,0,2,1,0,1,3
阅读全文
摘要:题目来源 LeetCode_53 题目描述 给你一个整数数组 nums ,请你找出一个具有最大和的连续子数组(子数组最少包含一个元素),返回其最大和。 子数组 是数组中的一个连续部分。 示例 1: 输入: nums = [-2,1,-3,4,-1,2,1,-5,4] 输出: 6 解释: 连续子数组
阅读全文
摘要:5. 最长回文子串 LeetCode_5 题目详情 方法一:暴力法(超时) class Solution { public String longestPalindrome(String s) { int len = s.length(); int maxLen = 0; String result
阅读全文
摘要:题目来源 LeetCode-121 题目描述 给定一个数组 prices ,它的第 i 个元素 prices[i] 表示一支给定股票第 i 天的价格。 你只能选择 某一天 买入这只股票,并选择在 未来的某一个不同的日子 卖出该股票。设计一个算法来计算你所能获取的最大利润。 返回你可以从这笔交易中获取
阅读全文
摘要:剑指 Offer 63. 股票的最大利润 Offer_63 题目描述 方法一:暴力法 package com.walegarrett.offer; /** * @Author WaleGarrett * @Date 2021/2/13 23:29 */ import java.util.Arrays
阅读全文
摘要:剑指 Offer 60. n个骰子的点数 Offer_60 题目详情 题解分析 package com.walegarrett.offer; /** * @Author WaleGarrett * @Date 2021/2/12 18:29 */ /** * 题目描述:把n个骰子扔在地上,所有骰子朝
阅读全文
摘要:剑指 Offer 49. 丑数 Offer_49 题目详情 解法一:小根堆+哈希表/HashSet 根据丑数的定义,如果a是丑数,那么a2, a3以及a*5都是丑数 可以使用小根堆存储按照从小到大排序的丑数。 package com.walegarrett.offer; import java.ut
阅读全文
摘要:剑指 Offer 48. 最长不含重复字符的子字符串 Offer_48 题目详情 解法分析 解法一:动态规划+哈希表 package com.walegarrett.offer; /** * @Author WaleGarrett * @Date 2021/2/8 20:52 */ import j
阅读全文
摘要:剑指 Offer 46. 把数字翻译成字符串 Offer_46 题目描述 题解分析 本题的解题思路是使用动态规划,首先得出递推公式如下 dp[i] = dp[i-1]+dp[i-2](如果s[i-1]+s[i]可以形成合法的数字:10-25) dp[i] = dp[i-1](如果s[i-1]+s[i
阅读全文
摘要:剑指 Offer 10- II. 青蛙跳台阶问题 Offer 10- II 题目描述: 动态规划方程: 循环求余: 复杂度分析: package com.walegarrett.offer; import java.util.Map; import java.util.TreeMap; /** *
阅读全文
摘要:剑指 Offer 47. 礼物的最大价值 Offer 47 题目描述: 状态转移方程: 空间复杂度优化: 复杂度分析: package com.walegarrett.offer; /** * @Author WaleGarrett * @Date 2020/12/12 9:08 */ /** *
阅读全文
摘要:剑指 Offer 19. 正则表达式匹配 题目链接 一. 字符串匹配大致可以分为三种情况: 第一种:正则串的最后一个字符为正常字符,此时根据主串的最后一个字符是否和它相同来判断是否匹配, 如果相同,则看A[N-2]和B[M-2]是否匹配。 第二种:正则串的最后一个字符为【.】表示可以匹配任意一个字符
阅读全文
摘要:剑指 Offer 14- I. 剪绳子 题目链接 还是343. 整数拆分的官方题解写的更清楚 本题说的将绳子剪成m段,m是大于1的任意一个正整数,也就是必须剪这个绳子,至于剪成几段,每一段多长,才能使得乘积最大,这就是要求解的问题了 ##【解题思路1】动态规划 对于的正整数 n,当 n≥2 时,可以
阅读全文
摘要:定西 ECNU-3531 #include<iostream> #include<cstdio> #include<algorithm> #include<cstring> #include<string> #include<cmath> #include<map> #include<vector>
阅读全文
摘要:3302. 打印 ECNU-3302 #include<iostream> #include<cstdio> #include<algorithm> #include<cstring> #include<string> #include<cmath> #include<map> #include<v
阅读全文
摘要:3653. 她的名字 ECNU-3635 这是一道动态规划的题目,使用动态规划来分析状态 https://blog.csdn.net/xs18952904/article/details/84888703 #include<iostream> #include<cstdio> #include<al
阅读全文
摘要:比特位计数 "LeetCode 338" 奇数的1的个数一定比上一个偶数的1多一个。 偶数的1一定和该偶数1/2的偶数的1一样多。
阅读全文
摘要:Common Subsequence "POJ 1458" //最长公共子序列问题 include include include include include using namespace std; string a,b; int dp[1003][1003]; int main(){ whi
阅读全文