![](https://img-blog.csdnimg.cn/20201014180756922.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
动态规划
IMMUNIZE
immunize yourself!
展开
-
20200910:力扣204周周赛题解上(Java/Python/Cpp)
力扣204周周赛题解上题目思路与算法代码实现写在最后题目1.1566. 重复至少 K 次且长度为 M 的模式2.1567. 乘积为正数的最长子数组长度思路与算法热身题不要求算法技巧,只要求暴力破解即可。本题直接模拟,注意如何比较相隔为m的值的下标表示即可。此处就可以看出python在操纵字符串与数组中的优越性,极其简洁的代码。java和cpp代码也附上本题也是模拟题,典型的动态规划题目,状态很明显就是当前位置结尾的乘积为正数或者负数的最大长度,转移的过程也注意就是正数和负数的转移过程,小学原创 2020-09-11 01:53:15 · 305 阅读 · 0 评论 -
20200815:力扣201周周赛题解记录下
力扣201周周赛题解记录下题目思路与算法代码实现题目和为目标值的最大数目不重叠非空子数组数目1547. 切棍子的最小成本在这里插入图片描述思路与算法第3题还是一个简单的模拟,用set也行,用map也行,贪心就行,都可以第4题是类似之前戳气球的类型的dp题,没什么太大区别,前缀和的技巧,再写出动态转移方程就可以了。注意代码细节。代码实现和为目标值的最大数目不重叠非空子数组数目class Solution { public int maxNonOverlapping(原创 2020-08-16 02:47:10 · 151 阅读 · 0 评论 -
20200715:动态规划复习day06
统计全1子矩阵题目思路与算法代码实现复杂度分析题目思路与算法题意很好理解,但是本题的动态规划不是常规思路的,你需要很好的理解题意并仔细分析状态与转移关系,才能定义正确的dp数组以及其dp转移关系。dp [ i ] [ j ]为每个点前面连续的1的个数。只算当前行。总体这不是一道简单的动态题,作为最后两天的一个思路拓展,力扣196周周赛第三题,智力题嗷,当时卡死在这,大致清楚应该用动态,但是没想清楚状态,这两天翻出来又看了好久才看懂,具体的不分析了,见代码。代码实现class Solutio原创 2020-07-15 23:18:20 · 142 阅读 · 0 评论 -
20200714:动态规划复习day05
动态规划复习day05今天继续说股票问题三题目: 买卖股票的最佳时机Ⅲ解题思路同理,我们还是按照老样子走。先判断状态和选择状态:今天第i天,我手里是否有股票,以及我卖出过几次股票。选择:我要么卖,要么买。再定义dp数组dp数组的定义根据上面的来看,状态有3个值,我们可以使用三维dp数组来实现,dp [i] [j] [k]表示这三个状态值。j表示是否持有股票,也就是只有两种状态,j可取0或者1。k的状态表示卖出过几次股票,因为我们只允许卖2次,因此k可取0,1,2三个值。这样也就原创 2020-07-14 21:26:54 · 174 阅读 · 0 评论 -
20200713:动态规划复习day04
动态规划复习day04继续说股票问题题目: 买卖股票的最佳时机Ⅱ解题思路首先说明这题在力扣标记为简单的原因,看下面的贪心解法:class Solution { public int maxProfit(int[] prices) { int res = 0; int diff = 0; if (prices.length == 1) { return 0; }原创 2020-07-13 23:30:10 · 142 阅读 · 0 评论 -
20200710:动态规划复习day03
动态规划复习day03今天来看股票问题1题目一:买卖股票的最佳时机解题思路首先我们想到的不是动态规划的解法,是一个常规思路:找到后面与当前值的差值最大的那个值,即为我们需要找的卖出的day。因此贴出代码如下:class Solution { public int maxProfit(int[] prices) { if(prices.length == 0) return 0; int max = 0; int mi原创 2020-07-10 21:54:40 · 120 阅读 · 0 评论 -
20200707:动态规划专题之不同路径
动态规划复习day01动态规划的题目一直是本人的弱项,这周尝试连续7天的动态规划专题,争取做到有的放矢。不同路径Ⅰ和Ⅱ解析题目一:不同路径解题思路依据动态规划解题的套路思路确定状态和选择,本题的状态显而易见为机器人的位置(i,j)选择为向下到达(i+1,j)或者向右到达(i,j+1)。明确dp数组含义,因为题目要求的是到达右下角的最多路径,因此我们设定在(i,j)点的dp数组如下:dp [i] [j]表示以该点为右下角终点时,从左上角到达此处的最大路径数目。明确dp数组原创 2020-07-07 23:10:23 · 332 阅读 · 0 评论