
方法1: 这道题还是挺不错的,然后我没做出来,但是我已经很接近答案了,还是很可惜的。这道题有很多种dp的做法,我只看了其中的一种,是lc官方解答2,复盘的时候有时间可以把其他额方法都看一遍。这个方法时间复杂n,空间复杂n。
class Solution {
public int numWays(int n, int k) {
if(n == 0) return 0;
int[][] dp = new int[n + 1][2];
dp[1][0] = k;
for(int i = 2; i <= n; i++){
dp[i][0] = (dp[i - 1][0] + dp[i - 1][1]) * (k - 1);
dp[i][1] = dp[i - 1][0];
}
return dp[n][0] + dp[n][1];
}
}
总结:
- 无
本文探讨了一道具有多种动态规划解决方案的编程题目,作者分享了自己未能完全解决但已接近答案的遗憾,并表示将在复盘时研究LC官方的解答和其他方法。代码实现中展示了时间复杂度为O(n)、空间复杂度为O(n)的解决方案,涉及动态规划数组的初始化和状态转移方程。

被折叠的 条评论
为什么被折叠?



