方法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];
}
}
总结:
- 无