随笔分类 -  动态规划DP

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

点击右上角即可分享
微信分享提示