[LintCode] 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.

Notice

All costs are positive integers.

Example
Given n = 3, k = 3, costs = [[14,2,11],[11,14,5],[14,3,10]] return 10

house 0 is color 2, house 1 is color 3, house 2 is color 2, 2 + 5 + 3 = 10

LeetCode上的原题,请参见我之前的博客Paint House II

class Solution {
public:
    /**
     * @param costs n x k cost matrix
     * @return an integer, the minimum cost to paint all houses
     */
    int minCostII(vector<vector<int>>& costs) {
        if (costs.empty() || costs[0].empty()) return 0;
        int m = costs.size(), n = costs[0].size();
        int min1 = 0, min2 = 0, idx1 = -1;
        for (int i = 0; i < m; ++i) {
            int m1 = INT_MAX, m2 = m1, id1 = -1;
            for (int j = 0; j < n; ++j) {
                int cost = costs[i][j] + (j == idx1 ? min2 : min1);
                if (cost < m1) {
                    m2 = m1; m1 = cost; id1 = j;
                } else if (cost < m2) {
                    m2 = cost;
                }
            }
            min1 = m1; idx1 = id1; min2 = m2;
        }
        return min1;
    }
};

本文转自博客园Grandyang的博客,原文链接:粉刷房子之二[LintCode] Paint House II ,如需转载请自行联系原博主。

相关文章
|
JavaScript 前端开发 UED
JS:如何获取浏览器窗口尺寸?
JS:如何获取浏览器窗口尺寸?
535 1
|
算法 C语言
使用指针来优化C语言程序性能
在C语言中,指针是一种强大且重要的概念。合理地使用指针可以提高程序的性能,减少内存的开销,并使代码更加简洁和易于维护。本文将介绍一些使用指针来优化C语言程序性能的技术。
472 0
|
20天前
|
存储 JSON 监控
解锁京东API,实时掌握商品价格动态,定价策略更灵活!
本文详解如何利用京东API(jd.union.open.goods.price.query)实现实时价格监控,涵盖API接入、数据获取、存储分析及动态定价策略。通过构建监控系统,企业可快速响应竞品调价、优化库存、提升转化率,结合InfluxDB与预测模型,助力电商精细化运营,已验证提升销售额37%。
168 0
|
8月前
|
人工智能 运维 监控
从大规模恶意攻击 DeepSeek 事件看 AI 创新隐忧:安全可观测体系建设刻不容缓
本文探讨了中国大模型DeepSeek在全球范围内的成功及其面临的网络安全挑战。DeepSeek以低成本、高性能的特点迅速走红,甚至超越ChatGPT,但同时也遭受了大规模恶意攻击,如DDoS和密码暴力破解。文章分析了这些攻击对AI行业的影响,并提出通过阿里云构建安全可观测体系的解决方案,包括流量监控、日志审计与异常检测等,为AI技术的安全发展提供保障。
340 0
|
运维 监控 安全
运维之道:构建高效稳定的系统运维实践
在数字化时代的浪潮中,系统运维的角色愈发重要。本文旨在探讨如何通过一系列创新的运维策略和工具,构建一个既高效又稳定的运维体系。从监控预警到自动化部署,从性能优化到安全防护,我们将深入分析各个关键领域的最佳实践,并结合实际案例,揭示这些策略和工具如何在现实环境中发挥作用,帮助企业提升系统的可用性和可靠性,最终实现业务连续性和增长的目标。
340 5
|
9月前
|
SQL 存储 分布式计算
《深入了解Hive SQL:与传统SQL的差异探秘》
Hive SQL是基于Hadoop的大数据查询语言,用于处理存储在HDFS中的海量数据。它将SQL-like查询翻译为MapReduce任务,在大数据分析领域表现出色。与传统SQL相比,Hive SQL适用于分布式存储和大规模并行处理,支持复杂数据类型(如数组、结构体),但在事务支持和实时性上较弱。传统SQL更适合小规模、结构化数据及高频更新场景,而Hive SQL则专注于离线批量数据分析,广泛应用于用户行为分析、风险评估等场景。两者各有优势,满足不同业务需求,共同推动数据处理技术发展。
604 0
|
机器学习/深度学习 人工智能 自然语言处理
【人工智能技术专题】「入门到精通系列教程」零基础带你进军人工智能领域的全流程技术体系和实战指南(LLM、AGI和AIGC都是什么)(一)
【人工智能技术专题】「入门到精通系列教程」零基础带你进军人工智能领域的全流程技术体系和实战指南(LLM、AGI和AIGC都是什么)
1072 0
|
自然语言处理 Java 数据处理
Java IO流全解析:字节流和字符流的区别与联系!
Java IO流全解析:字节流和字符流的区别与联系!
544 1
|
安全 NoSQL Linux
常见的挖矿木马
常见的挖矿木马
455 1
|
XML 存储 JSON
网络原理之UDP协议
网络原理之UDP协议