256. Paint House
LeetCode 256. Paint House
Description
There is a row of n
houses, where each house can be painted one of three colors: red, blue, or green. The cost of painting each house with a certain color is different. You have to paint all the houses such that no two adjacent houses have the same color.
The cost of painting each house with a certain color is represented by an n x 3
cost matrix costs
.
For example,
costs[0][0]
is the cost of painting house0
with the color red;costs[1][2]
is the cost of painting house 1 with color green, and so on...
Return the minimum cost to paint all houses.
Example 1:
Example 2:
Constraints:
costs.length == n
costs[i].length == 3
1 <= n <= 100
1 <= costs[i][j] <= 20
Tags
Dynamic Programming
Solution
Start from the last but one element of costs
. In terms of the current house cur = costs[i]
, each element cur[i] = min(pre[0..i-1, i+1, ...])
where pre
, initialized with costs[-1]
, is the last cur
.
Though we can modify elements in-place, we solve this problem with extra O(1)
space in case that other functions require this input variable.
Complexity
Time complexity: , given that there is always 3 colors, we only consider the loop;
Space complexity: , 6 variables.
Code
Reference
Last updated
Was this helpful?