265. Paint House II 房子涂色K种选择的版本
[抄题]:
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.
Example:
Input: [[1,5,3],[2,9,4]]
Output: 5
Explanation: Paint house 0 into color 0, paint house 1 into color 2. Minimum cost: 1 + 4 = 5;
Or paint house 0 into color 2, paint house 1 into color 0. Minimum cost: 3 + 2 = 5.
[暴力解法]:
时间分析:
空间分析:
[优化后]:
时间分析:
空间分析:
[奇葩输出条件]:
[奇葩corner case]:
[思维问题]:
k个颜色就不知道怎么办了:还是试啊 再套一层循环 一个个加
[英文数据结构或算法,为什么不用别的数据结构或算法]:
[一句话思路]:
三重循环, s 和 j相等的时候就continue掉
[输入量]:空: 正常情况:特大:特小:程序里处理到的特殊情况:异常情况(不合法不合理的输入):
[画图]:
[一刷]:
- i j是主变量,所以cost[i][j]都得用, dp[i][j]数组在不变的情况下就是它自己本身
dp[i][j] = Math.min(dp[i][j], dp[i - 1][s] + costs[i][j]);
[二刷]:
[三刷]:
[四刷]:
[五刷]:
[五分钟肉眼debug的结果]:
[总结]:
所以cost[i][j]都得用, dp[i][j]数组在不变的情况下就是它自己本身
[复杂度]:Time complexity: O(n*k*k) Space complexity: O(n*k)
[算法思想:迭代/递归/分治/贪心]:
贪心
[关键模板化代码]:
[其他解法]:
[Follow Up]:
[LC给出的题目变变变]:
[代码风格] :
[是否头一次写此类driver funcion的代码] :
class Solution {
public int minCostII(int[][] costs) {
//cc
if (costs == null || costs.length == 0) return 0;
//ini: dp[][], dp[0][k]
int n = costs.length, k = costs[0].length;
int[][] dp = new int[n][k];
for (int j = 0; j < k; j++) {
dp[0][j] = costs[0][j];
}
//for loop: continue;
for (int i = 1; i < n; i++) {
for (int j = 0; j < k; j++) {
dp[i][j] = Integer.MAX_VALUE;
for (int s = 0; s < k; s++) {
if (s == j) continue;
dp[i][j] = Math.min(dp[i][j], dp[i - 1][s] + costs[i][j]);
}
}
}
//return: compare each costs[i][k]
int res = Integer.MAX_VALUE;
for (int j = 0; j < k; j++) {
res = Math.min(res, dp[n - 1][j]);
}
return res;
}
}
265. Paint House II 房子涂色K种选择的版本的更多相关文章
- leetcode 198. House Robber 、 213. House Robber II 、337. House Robber III 、256. Paint House(lintcode 515) 、265. Paint House II(lintcode 516) 、276. Paint Fence(lintcode 514)
House Robber:不能相邻,求能获得的最大值 House Robber II:不能相邻且第一个和最后一个不能同时取,求能获得的最大值 House Robber III:二叉树下的不能相邻,求能 ...
- [leetcode]265. Paint House II粉刷房子(K色可选)
There are a row of n houses, each house can be painted with one of the k colors. The cost of paintin ...
- [LeetCode] 265. Paint House II 粉刷房子
There are a row of n houses, each house can be painted with one of the k colors. The cost of paintin ...
- [leetcode]256. Paint House粉刷房子(三色可选)
There are a row of n houses, each house can be painted with one of the three colors: red, blue or gr ...
- 265. Paint House II
题目: There are a row of n houses, each house can be painted with one of the k colors. The cost of pai ...
- [LeetCode#265] Paint House II
Problem: There are a row of n houses, each house can be painted with one of the k colors. The cost o ...
- LC 265. Paint House II
There are a row of n houses, each house can be painted with one of the k colors. The cost of paintin ...
- [LeetCode] Paint House II 粉刷房子之二
There are a row of n houses, each house can be painted with one of the k colors. The cost of paintin ...
- 【BZOJ-1260】涂色paint 区间DP
1260: [CQOI2007]涂色paint Time Limit: 30 Sec Memory Limit: 64 MBSubmit: 1147 Solved: 698[Submit][Sta ...
随机推荐
- RabbitMQ引入
引入MQ话题 可能很多人有疑惑:MQ到底是什么?哪些场景下要使用MQ? 前段时间安装了RabbitMQ,现在就记录下自己的学习心得吧.首先看段程序: class Program { static vo ...
- yum安装apache及问题解决
一.检查服务器上是否已经安装了apache apache在linux系统里的名字是httpd,执行以下命令,如果有返回的信息,则会显示已经安装的软件.如果没有则不会显示其它的信息. rpm -qa h ...
- 【转】foxmail邮箱我已进清理了为什么还是说我的邮箱已满
原文网址:http://zhidao.baidu.com/link?url=YmX_tBenMVsCopjljd80e2Jwvh7H8GnVSrDLeKKBNQkh_Ty50IsX5eAIy4P_64 ...
- am335x_y蜂鸣器驱动
修改文件:1.板级文件/arch/arm/mach-omap2/board-am335xevm.c static struct platform_device buzzer_device= { .na ...
- LINQ to SQL 系列 如何使用LINQ to SQL插入、修改、删除数据 (转)
http://www.cnblogs.com/yukaizhao/archive/2010/05/13/linq_to_sql_1.html LINQ和 LINQ to SQL 都已经不是一个新事物了 ...
- bzoj 3328 PYXFIB——单位根反演
题目:https://www.lydsy.com/JudgeOnline/problem.php?id=3328 单位根反演主要就是有 \( [k|n] = \frac{1}{k}\sum\limit ...
- Makefile编写 三 伪目标的作用
本节我们讨论一个Makefile中的一个重要的特殊目标:伪目标. 伪目标是这样一个目标:它不代表一个真正的文件名,在执行make时可以指定这个目标来执行其所在规则定义的命令,有时我们也可以将一个伪目标 ...
- Asp.net MVC 出现“Failed to map the path '/'.”错误
Server Error in '/' Application. Parser Error Description: An error occurred during the parsing of a ...
- app crawler1
app crawler简介 执行 java -jar appcrawler-2.1.3.jar 查看相关参数 -a, --app Android或者iOS的文件地址, 可以是网络地址, 赋值给appi ...
- 第13届景驰-埃森哲杯广东工业大学ACM程序设计大赛-等式(求$N^2$的因子个数)
一.题目链接 https://www.nowcoder.com/acm/contest/90/F 二.题面 时间限制:C/C++ 1秒,其他语言2秒 空间限制:C/C++ 32768K,其他语言655 ...