Paint House
The problem
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 house 0 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.
Input: costs = [[17,2,17],[16,16,5],[14,3,19]] Output: 10 Explanation: Paint house 0 into blue, paint house 1 into green, paint house 2 into blue. Minimum cost: 2 + 5 + 3 = 10.
Input: costs = [[7,6,2]] Output: 2 Explaination : Painting house 0 into green is minimum cost possibe .
Input: costs = [[13,19,11],[13,16,7],[14,12,19],[17,20,17],[16,16,5],[14,3,19]]
- costs.length == n
- costs[i].length == 3
- 1 <= n <= 100
- 1 <= costs[i][j] <= 20
cpp
class Solution {
public:
int minCost(vector<vector<int>>& costs) {
// Your code goes here
}
};java
class Solution {
public int minCost(int[][] costs) {
// Your code goes here
}
}python
class Solution(object):
def minCost(self, costs):
"""
:type costs: List[List[int]]
:rtype: int
"""
# Your code goes herejavascript
/**
* @param {number[][]} costs
* @return {number}
*/
var minCost = function(costs) {
// Your code goes here
};csharp
public class Solution
{
public int MinCost(int[][] costs)
{
// Your code goes here
}
}go
func minCost(costs [][]int) int {
}Stuck? Show a way to structure it+
- 01Set DP for the first house to its paint costs.
- 02For each later house, choose the cheaper different previous color.
- 03Update all three color states from old values.
- 04Use temporary values before overwriting.
- 05Return the minimum final state.
Reference answer
Then expect these follow-ups
How would you reconstruct color choices?
Tests: parents
How does k colors change the complexity?
Tests: minima tracking
Free to read · better with Enzo
Practice this out loud with Enzo
Enzo runs it as a mock interview, pushes back with follow-ups, and grades you on the rubric.
Next question