确定状态:

这个题其实和之前的那个阿里矩阵题是一样的,只不过是状态转移方程稍有不同,paint house就是把相邻的情况排除了。

dp[i][j]代表从0paint到i号房子,在i号房子涂j号色时用的最少costs。

因此状态转移方程如下

dp[i][j] = dp[i][j] + min{ dp[i-1][k]}  其中k=1....m 且k!=j

初始条件和边界条件

dp[i][j]=costs[i][j]

计算顺序

dp[1][0] dp[0][1] dp[0][2]

....

dp[n][0] dp[n][1] dp[n][2]

返回结果

min{ dp[n][0] , dp[n][1] ,dp[n][2] }

代码

 public int minCost(int[][] costs) {//corner case if(costs==null||costs.length==0)return 0;for(int i=1;i<costs.length;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][1],costs[i-1][0]);}int n = costs.length-1;return Math.min(Math.min(costs[n][0], costs[n][1]), costs[n][2]);}

动态规划实战15 leetcode-256. Paint House相关推荐

  1. [实战]MVC5+EF6+MySql企业网盘实战(15)——逻辑重构2

    写在前面 上篇文章修改文件上传的逻辑,这篇修改下文件下载的逻辑. 系列文章 [EF]vs15+ef6+mysql code first方式 [实战]MVC5+EF6+MySql企业网盘实战(1) [实 ...

  2. 动态规划实战--硬币找零问题

    上一篇文章上提到硬币找零的例子,现在我们实战动态规划就从硬币找零开始 问题描述: 给定 n 种不同面值的硬币,分别记为 c[0], c[1], c[2], - c[n],同时还有一个总金额 k,编写一 ...

  3. 买卖股票类问题动态规划解法(Leetcode题解-Python语言)

    在 Leetcode 中,关于买卖股票的问题共有6道,而这些题目是可以用相同的思维进行求解的,强烈推荐这篇总结,写得非常到位. 股票类问题的动态规划分三步走,1.首先明确方程的含义, T[i][k][ ...

  4. 动态规划——单词拆分(Leetcode 139)

    题目选自Leetcode 139.单词拆分 问题描述: 解题思路: 怎么想到用动态规划的? 题目的相关标签中有动态规划.(QAQ) dp数组怎么选? dp[i]: 表示子串s[0:i] 是否全部能拆分 ...

  5. 动态规划——零钱兑换(Leetcode 322)

    题目选自Leetcode 322.零钱兑换 想必大家看一眼就明白了(bushi),这就是动态规划的背包问题~ 算法思想 那么,既然知道了这是个动态规划问题,就要思考如何列出正确的状态转移方程? 1.确 ...

  6. ⭐算法入门⭐《二分枚举》简单15 —— LeetCode LCP 18. 早餐组合

    文章目录 一.题目 1.题目描述 2.基础框架 3.原题链接 二.解题报告 1.思路分析 2.时间复杂度 3.代码详解 三.本题小知识 四.加群须知 一.题目 1.题目描述   小扣在秋日市集选择了一 ...

  7. 子串、子数组与子序列类型问题的动态规划求解(Leetcode题解-Python语言)

    一般来说,子串和子数组都是连续的,而子序列是可以不连续的,遇到子序列问题基本上都是用动态规划求解. 53. 最大子数组和(剑指 Offer 42. 连续子数组的最大和) class Solution: ...

  8. LeetCode 256. 粉刷房子(DP)

    文章目录 1. 题目 2. 解题 1. 题目 假如有一排房子,共 n 个,每个房子可以被粉刷成红色.蓝色或者绿色这三种颜色中的一种,你需要粉刷所有的房子并且使其与相邻的两个房子颜色不能相同. 当然,因 ...

  9. 最大连续子数组和 动态规划_每日LeetCode,乘积最大子数组

    152. 乘积最大子数组​leetcode-cn.com 给你一个整数数组nums ,请你找出数组中乘积最大的连续子数组(该子数组中至少包含一个数字),并返回该子数组所对应的乘积. 示例 1: 输入: ...

  10. Leetcode 256.粉刷房子

    Time: 20190903 Type: Easy 题目描述 假如有一排房子,共 n 个,每个房子可以被粉刷成红色.蓝色或者绿色这三种颜色中的一种,你需要粉刷所有的房子并且使其相邻的两个房子颜色不能相 ...

最新文章

  1. Linux里新建文件/目录的默认权限
  2. 全面分析 Spring 的编程式事务管理及声明式事务管理(转)
  3. QML基础类型之color
  4. 装饰模式与代理模式的区别
  5. 某公司故障分析案例(实战案例)
  6. 监督学习 | SVM 之支持向量机Sklearn实现
  7. setattr()、getattr()、hasattr()【设置属性和方法、得到属性、判断是否有属性和方法】
  8. logstash收集java日志,多行合并成一行
  9. 字符串算法-Rabin-Karp
  10. TimeQuest就一定要搞定——时序分析基本公式
  11. linux下目录的基本命令
  12. struts 2.3.8备忘
  13. 走进javascript——DOM事件
  14. 2019年8月2 星期五 今日计划
  15. 深度学习基础 - 余弦定理
  16. 苹果快捷键怎么调出来_iPad常用快捷键
  17. html白色的斜线,面试官:如何使用 CSS 实现斜线效果?
  18. Android复习系列④之《Android进阶》
  19. Coremail论客全球安全生态合作伙伴召集令正式启动
  20. 实验1-2 Welcome to You! (5 分)

热门文章

  1. 【是程序猿就干了这碗心灵鸡汤】我们这一代人的困惑
  2. 解决Eclipse10配置Pydev不成功的问题
  3. VNC方式连接树莓派
  4. SSD5_ Exam 2分析
  5. 记录:protobuf在网游中的用法
  6. 【Shiro第四篇】SpringBoot + Shiro实现记住登录状态
  7. 转载的关于pthread_cond_wait的文章,写的比较详细
  8. Codeforces348B Apple Tree DFS
  9. 一步完成 MySQL 向 Redis 迁移
  10. eclipse Android开发——布局查看