剑指 Offer II 091. 粉刷房子

98 阅读1分钟

剑指 Offer II 091. 粉刷房子

假如有一排房子,共 n 个,每个房子可以被粉刷成红色、蓝色或者绿色这三种颜色中的一种,你需要粉刷所有的房子并且使其相邻的两个房子颜色不能相同

示例:

输入: costs = [[17,2,17],[16,16,5],[14,3,19]]
输出: 10
解释: 将 0 号房子粉刷成蓝色,1 号房子粉刷成绿色,2 号房子粉刷成蓝色。
     最少花费: 2 + 5 + 3 = 10

代码实现 第一行累加到第二行,第二行累加到第三行 。。。。。直到最后一行,我们对最后一行的数组取最小值即可

var minCost = function (arr) {
  var n = arr.length;
  var m = arr[0].length;
  for (var i = 1; i < n; i++) {
    for (var j = 0; j < m; j++) {
      var brr = arr[i - 1].filter((v, k) => k != j)
      arr[i][j] += Math.min(...brr);
    }
  }
  return Math.min(...arr[n - 1]);
};

console.log(minCost([[17,17,2],[16,16,5],[14,19,3]]));