276 Paint Fence
Last updated
Last updated
class Solution {
public int numWays(int n, int k) {
if (n == 0 || k == 0) {
return 0;
}
int[] cache = new int[n + 1];
return waysToPaintFence(n, k, cache);
}
public int waysToPaintFence(int n, int k, int[] cache) {
if (cache[n] != 0) {
return cache[n];
}
if (n == 1) {
return k;
}
if (n == 2) {
return k * k;
}
cache[n] = (k - 1) * (waysToPaintFence(n - 1, k, cache) + waysToPaintFence(n - 2, k, cache));
return cache[n];
}
}class Solution {
public int numWays(int n, int k) {
if (n == 0 || k == 0) {
return 0;
}
int[] ways = new int[n + 1];
if (n == 1) {
return k;
}
if (n == 2) {
return k * k;
}
ways[1] = k;
ways[2] = k * k;
for (int i = 3; i <= n; i++) {
ways[i] = (k - 1) * (ways[i - 1] + ways[i - 2]);
}
return ways[n];
}
}