- 博客(5)
- 收藏
- 关注
原创 动态规划--LeetCode第338题比特位计数
所以直接查官方解答。好家伙,位运算~~~~~~~~~没正经学过捏,这边浅浅的学一点吧。题目要的是返回一个长度为n+1的数组ans,直接设dp[n+1] 就是这个数组;想了一个下午,想破头也想不出来,被官方秒了。数组元素间的关系是?
2023-09-14 18:27:46
88
1
原创 动态规划--LeetCode第121题买卖股票的最佳时机
假如我今天买入股票,那么我明天只能卖出股票或者不变化,故有:dp[i] = max(dp[i-1],prices[i]-buyprice);这个状态转移方程和我感觉差不多捏,问题是我的买入股票的价格要遍历,人家只需要求出最小的买入股票价格。所以还是要多学~~~~~~~~~~当第k天买入,buyprice = prices[k-1], dp[m] = 0;题目要求的是最大利润,不妨设n天内的最大利润为dp[n];嘿,好像没问题,但是时间复杂度有点高了捏,有O(n²)。第k天前的最大例润都为0(包括第k天)
2023-09-13 15:29:20
86
原创 动态规划--LeetCode第119题杨辉三角2
题目中的rowIndex同时也是每行的元素个数,所以设置数组int dp[n][n],n就是题目中的rowIndex;然后呢,就是找数组元素之间的关系,就是:dp[i][j] = dp[i-1][j-1] + dp[i-1][j];初始值为dp[0][0] = 1;第一列和最后一列的值都为1;思路与118题的杨辉三角类似,只是返回值变为某一行的数据;才刷三题简单题,我感觉我又行了~~~
2023-09-13 13:04:54
89
原创 动态规划--LeetCode第118题杨辉三角
动态方程转移式就为:dp[i][j] = dp[i-1][j-1] + dp[i-1][j],前提是n>i>=1 && 0<j<n;诶,这边返回值他说我编译错误,看来这边不能简单的返回一个数组,所以我得从头把这个数组变一变~~~~由题目条件可知,杨辉三角中,每个数是它左上方和右上方的数的和,所以设置一个数组dp[n][n],n为杨辉三角的行数,即题目中的numRows,每个dp[i][j]对应的是第i行第j列的元素;当j=n-1时,即为最后一列的所有值,都为1;当j=0时,即为第一列的所有值,为1;
2023-09-12 23:10:15
94
原创 动态规划--leetcode第70题爬楼梯
dp有什么式子可以表达数组元素之间的关系捏?可以知道,到达楼顶的前一步,是到楼顶的下一层爬一层,或者到楼顶的下二层爬两层,故有:dp[n] = dp[n-1] + dp[n-2];答案是不管什么题,都可以尝试着去使用动态规划,因为这是最最最基本的一种思想。然后就是找初始值了,由题可知,dp[0] = 1,dp[1] = 2,dp[2] = 3,刚好也满足上述关系式;题目中要求多少中不同的方法可以到楼顶(n层),可以直接设置到达楼顶的方法总数为dp[n];结果是没问题的,时间复杂度和空间复杂度都是O(n);
2023-09-12 21:48:33
98
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人