zoukankan      html  css  js  c++  java
  • [Swift]LeetCode265.粉刷房子 II $ Paint House II

    ★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★
    ➤微信公众号:山青咏芝(shanqingyongzhi)
    ➤博客园地址:山青咏芝(https://www.cnblogs.com/strengthen/
    ➤GitHub地址:https://github.com/strengthen/LeetCode
    ➤原文地址:https://www.cnblogs.com/strengthen/p/10229976.html 
    ➤如果链接不是山青咏芝的博客园地址,则可能是爬取作者的文章。
    ➤原文已修改更新!强烈建议点击原文地址阅读!支持作者!支持原创!
    ★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★

    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.

    Follow up:
    Could you solve it in O(nk) runtime?


     有一排N栋房子,每栋房子都可以涂上其中一种K颜色。用某种颜色粉刷每栋房子的费用是不同的。你必须把所有的房子都漆成没有两个相邻的房子有相同的颜色。

    用一个n x k的成本矩阵表示每栋房子涂上某种颜色的成本。例如,costs[0][0]是用颜色0绘制房子0的成本;costs[1][2]是用颜色2绘制房子1的成本,等等…找出油漆所有房屋的最低成本。

    注:

    所有成本都是正整数。

    进阶:

    你能在运行时解决它吗?


     1 class Solution {
     2     func minCostII(_ costs: [[Int]]) -> Int {
     3         if costs.isEmpty || costs[0].isEmpty
     4         {
     5             return 0
     6         }
     7         var min1:Int = 0
     8         var min2:Int = 0
     9         var idx1:Int = -1
    10         for i in 0..<costs.count
    11         {
    12             var m1:Int = Int.max
    13             var m2:Int = m1
    14             var id1:Int = -1
    15             for j in 0..<costs[0].count
    16             {
    17                 var cost:Int = costs[i][j] + (j == idx1 ? min2 : min1)
    18                 if cost < m1
    19                 {
    20                     m2 = m1
    21                     m1 = cost
    22                     id1 = j
    23                 }
    24                 else if cost < m2
    25                 {
    26                      m2 = cost
    27                 }
    28             }
    29             min1 = m1
    30             min2 = m2
    31             idx1 = id1
    32         }
    33         return min1
    34     }
    35 }
  • 相关阅读:
    System.Diagnostics.Conditional 的妙用 -- 把文档放在代码中
    UGUI 特效怎样在UI上裁剪
    通过GL函数处理图片以及其它相关功能
    每次都能让人头大的 Shader -- 从整合说起
    每次都能让人头大的 Shader -- 从一次简单的功能说起
    由于闭包引起的内存泄漏
    较为激进的基础框架
    UGUI 逻辑以及实用性辅助功能
    单相机做分屏混合
    AssetBundleMaster_ReadMe_EN
  • 原文地址:https://www.cnblogs.com/strengthen/p/10229976.html
Copyright © 2011-2022 走看看