|
1 | 1 | package com.fishercoder.solutions;
|
2 | 2 |
|
3 |
| -/** |
4 |
| - * There are a row of n houses, each house can be painted with one of the 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. |
5 |
| -
|
6 |
| - The cost of painting each house with a certain color is represented by a n x 3 cost matrix. For example, costs[0][0] is the cost of painting house 0 with color red; costs[1][2] is the cost of painting house 1 with color green, and so on... Find the minimum cost to paint all houses. |
7 |
| -
|
8 |
| - Note: |
9 |
| - All costs are positive integers. |
10 |
| - */ |
11 | 3 | public class _256 {
|
12 | 4 |
|
13 |
| - public int minCost(int[][] costs) { |
14 |
| - if (costs == null || costs.length == 0) { |
15 |
| - return 0; |
| 5 | + public static class Solution1 { |
| 6 | + public int minCost(int[][] costs) { |
| 7 | + if (costs == null || costs.length == 0) { |
| 8 | + return 0; |
| 9 | + } |
| 10 | + for (int i = 1; i < costs.length; i++) { |
| 11 | + costs[i][0] += Math.min(costs[i - 1][1], costs[i - 1][2]); |
| 12 | + costs[i][1] += Math.min(costs[i - 1][0], costs[i - 1][2]); |
| 13 | + costs[i][2] += Math.min(costs[i - 1][1], costs[i - 1][0]); |
| 14 | + } |
| 15 | + int n = costs.length - 1; |
| 16 | + return Math.min(Math.min(costs[n][0], costs[n][1]), costs[n][2]); |
16 | 17 | }
|
17 |
| - for (int i = 1; i < costs.length; i++) { |
18 |
| - costs[i][0] += Math.min(costs[i - 1][1], costs[i - 1][2]); |
19 |
| - costs[i][1] += Math.min(costs[i - 1][0], costs[i - 1][2]); |
20 |
| - costs[i][2] += Math.min(costs[i - 1][1], costs[i - 1][0]); |
21 |
| - } |
22 |
| - int n = costs.length - 1; |
23 |
| - return Math.min(Math.min(costs[n][0], costs[n][1]), costs[n][2]); |
24 | 18 | }
|
25 |
| - |
26 | 19 | }
|
0 commit comments