
刷题记录
文章平均质量分 61
记录刷题的心得体会
风掣长空
这个作者很懒,什么都没留下…
展开
-
动态规划——123. 买卖股票的最佳时机 III
在第0天,是不可能出现交易一次或者交易两次的情况的,所以f[0][1]和f[0][2]是取不到的,所以我们将它设置为无穷小;只有当j>=1的时候,才执行 g[i][j] = max(g[i][j], f[i - 1][j - 1] + prices[i]),就可以解决这个问题了;在第0天,交易0次,处于买入的状态下,最大利润是f[0][0]=-p[0];在第0天,交易0次,处于卖出的状态下,最大利润是g[0][0]=0;f[i][j]表示第i天,交易j次后,处于买入状态的最大利润。原创 2024-06-26 21:03:37 · 387 阅读 · 0 评论 -
动态规划——买卖股票的最佳时机含冷冻期
可以从买入状态卖出变成可交易状态,或者从买入状态还是到买入状态(什么也不干),可以从可交易状态到买入状态,或者从可交易状态到可交易状态(什么也不干)该题有我们可以定义三种状态,买入状态,可交易状态 ,冷冻期状态。dp[i][1]表示在第i天,处于可交易状态时所获得的最大利润。dp[i][2]表示在第i天,处于冷冻期状态时所获得的最大利润。dp[i][0]表示在第i天,处于买入状态时所获得的最大利润。可以从冷冻期状态到可交易状态(只有这一种情况)根据这个图可以看出,原创 2024-06-22 20:01:47 · 301 阅读 · 0 评论 -
动态规划——达拉崩吧
假如说我们正向推状态转移方程,很难推出来,因为这道题有“加血”的说法,只能依靠后面的值判断前面所需要的血量,也就是说,如果正向的dp表示从起点出发,到达(i,j)需要最少的血量,那么[i][j+1]也会影响dp[i][j]的值,所以不建议正向dp的做法,那么状态转移方程就是 dp[i][j]=min(dp[i+1][j],dp[i][j+1])-dungeon[i][j]dp[i][j]表示从[i][j]位置到终点的所需要的最低健康值,x+dungeon[i][j]>=dp[i+1][j]或者。原创 2024-06-20 20:20:08 · 455 阅读 · 2 评论 -
动态规划解题步骤
重要状态规划题一般要列一个dp表。原创 2024-06-16 21:20:05 · 269 阅读 · 2 评论 -
二维前缀和
这道题的难点就在于求二维数组的前缀和,不过看了这篇博客,相信也解决了这个问题;有了上面的方法,我们可以计算出前缀和,那么怎么计算查询结果呢?这样就可以计算出下标为[i][j]的二维矩阵的前缀和了;i表示行,j表示列,i和j从1开始;也可以用这样的公式表示出来;原创 2024-05-26 12:38:12 · 242 阅读 · 2 评论 -
蓝桥杯真题讲解——积木画
同时,小明有一块面积大小为 2 × N 的画布,画布由 2 × N 个 1 × 1 区域构成。这是一个简单的动态规划题,虽然我还不知道什么是动态规划,但当我理解这个题后就是找规律,找到规律一切就出来了。注意,这里没有用数组来实现,因为数据太大,创建一个数组占用的空间太大,我用的变量代换。a相当于F[n-3],b相当于F[n-2],c相当于F[n-1],d相当于F[n],我自己也是看讲解看了好多遍,动手画了好几遍,才理解这道题,所以一定要动手去写,a相当于F[0],b相当于F[1],c相当于F[2],原创 2023-12-23 14:15:03 · 1429 阅读 · 13 评论 -
LeetCode575——分糖果
LeetCode575分糖果,简单的二分法,思路简单,注意二分边界问题原创 2024-04-03 23:45:00 · 410 阅读 · 2 评论