Paint House
Input: [[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.class Solution {
public int minCost(int[][] costs) {
if(costs == null || costs.length == 0 || costs[0].length == 0)
return 0;
int res = Integer.MAX_VALUE;
for(int i = 1; i < costs.length ; i++){
costs[i][0] = costs[i][0] + Math.min(costs[i-1][1],costs[i-1][2]);
costs[i][1] = costs[i][1] + Math.min(costs[i-1][2],costs[i-1][0]);
costs[i][2] = costs[i][2] + Math.min(costs[i-1][1],costs[i-1][0]);
}
for(int j = 0; j < 3;j++){
res = Math.min(res, costs[costs.length-1][j]);
}
return res;
}
}Last updated