BiruLyu
7/8/2017 - 4:23 PM

256. Paint House(in place).java

public class Solution {
    public int minCost(int[][] costs) {
        if (costs == null || costs.length < 1 || costs[0].length < 1) return 0;
        int n = costs.length;
        //int[][] dp = new int[n][3];
       
        for (int i = 1; i < n; i++) {
            costs[i][0] += Math.min(costs[i - 1][1], costs[i - 1][2]);
            costs[i][1] += Math.min(costs[i - 1][0], costs[i - 1][2]);
            costs[i][2] += Math.min(costs[i - 1][0], costs[i - 1][1]);
        } 
        return Math.min(Math.min(costs[n - 1][0], costs[n - 1][1]), costs[n - 1][2]);
    }
}
public class Solution {
  public int minCost(int[][] costs) {
      if(costs.length==0) return 0;
      int lastR = costs[0][0];
      int lastG = costs[0][1];
      int lastB = costs[0][2];
      for(int i=1; i<costs.length; i++){
          int curR = Math.min(lastG,lastB)+costs[i][0];
          int curG = Math.min(lastR,lastB)+costs[i][1];
          int curB = Math.min(lastR,lastG)+costs[i][2];
          lastR = curR;
          lastG = curG;
          lastB = curB;
      }
      return Math.min(Math.min(lastR,lastG),lastB);
  }
}