首页 > 其他 > 详细

LeetCode Paint House II

时间:2016-03-28 07:03:38      阅读:205      评论:0      收藏:0      [点我收藏+]

原题链接在这里:https://leetcode.com/problems/paint-house-ii/

题目:

There are a row of n houses, each house can be painted with one of the k colors. 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 a n x k cost matrix. For example, costs[0][0] is the cost of painting house 0 with color 0; costs[1][2] is the cost of painting house 1 with color 2, and so on... Find the minimum cost to paint all houses.

Note:
All costs are positive integers.

题解:

类似Paint House. k中不同的颜色. paint当前house时, 若是当前的颜色k与之前最小cost的颜色不同时,加上之前的最小值. 若是当前k与之前相同就选之前给出第二小cost的颜色.

Time Complexity: O(kn). Space: O(1).

AC Java:

 1 public class Solution {
 2     public int minCostII(int[][] costs) {
 3         if(costs == null || costs.length == 0){
 4             return 0;
 5         }
 6         int min1 = 0; //当前这个house涂完最小的cost
 7         int min2 = 0; //当前这个house涂完第二小的cost
 8         int lastColor = -1; //上个house选择的颜色
 9         for(int i = 0; i<costs.length; i++){
10             int curMin1 = Integer.MAX_VALUE; //选择到当前颜色时的最小cost
11             int curMin2 = Integer.MAX_VALUE; //选择到当前颜色时的第二小cost
12             int curColor = -1;  
13             for(int k = 0; k<costs[i].length; k++){
14                 int newCost = costs[i][k] + (k == lastColor ? min2 : min1);
15                 if(newCost < curMin1){
16                     curMin2 = curMin1;
17                     curMin1 = newCost;
18                     curColor = k;
19                 }else if(newCost < curMin2){
20                     curMin2 = newCost;
21                 }
22             }
23             min1 = curMin1;
24             min2 = curMin2;
25             lastColor = curColor;
26         }
27         return min1;
28     }
29 }

 

LeetCode Paint House II

原文:http://www.cnblogs.com/Dylan-Java-NYC/p/5327633.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!