| |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
-> 数据结构与算法 -> LeetCode 剑指 Offer II 091.粉刷房子 - 原地修改 -> 正文阅读 |
|
[数据结构与算法]LeetCode 剑指 Offer II 091.粉刷房子 - 原地修改 |
【LetMeFly】剑指 Offer II 091.粉刷房子 - 原地修改力扣题目链接:https://leetcode.cn/problems/JEj789/ 假如有一排房子,共 当然,因为市场上不同颜色油漆的价格不同,所以房子粉刷成不同颜色的花费成本也是不同的。每个房子粉刷成不同颜色的花费是以一个? 例如, 请计算出粉刷完所有房子最少的花费成本。 ? 示例 1: 输入: costs = [[17,2,17],[16,16,5],[14,3,19]] 输出: 10 解释: 将 0 号房子粉刷成蓝色,1 号房子粉刷成绿色,2 号房子粉刷成蓝色。 ? 最少花费: 2 + 5 + 3 = 10。 示例 2: 输入: costs = [[7,6,2]] 输出: 2 ? 提示:
? 注意:本题与主站 256?题相同:https://leetcode-cn.com/problems/paint-house/ 方法一:动态规划这是一道比较容易想出来的动态规划,我们用 d p [ i ] [ j ] dp[i][j] dp[i][j]表示第 i + 1 i + 1 i+1个方块粉刷第 j j j个颜色时,前 i + 1 i + 1 i+1个方块儿的最小花费。 那么, m i n d p [ n ? 1 ] [ 0 , 1 , 2 ] min{dp[n - 1][0, 1, 2]} mindp[n?1][0,1,2]就是答案(把第 n n n个方块粉刷成 3 3 3种颜色中的一个,前 n n n个方块的最小花费) 但是,相邻两个方块颜色不能相同。因此递推公式:
如果允许修改 c o s t s costs costs数组,那么我们可以直接用 c o s t s costs costs数组来代替 d p dp dp数组, c o s t s [ i ] [ j ] + = m i n ( c o s t s [ i ? 1 ] [ x x ] ) costs[i][j] += min(costs[i - 1][xx]) costs[i][j]+=min(costs[i?1][xx])即可。
AC代码C++
|
|
|
上一篇文章 下一篇文章 查看所有文章 |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 | -2024/11/25 23:18:13- |
|
网站联系: qq:121756557 email:121756557@qq.com IT数码 |