目录
打家劫舍【LeetCode 198】
【题目】给定一个非负整数数组,代表每个房子的现金数。如果两间相邻的房屋同时被小偷闯入,系统会自动报警。计算小偷在不触动警报装置的情况下,能够偷窃到的最高金额。
输入: [2,7,9,3,1]
输出: 12
解释: 偷窃 1 号房屋 (金额 = 2), 偷窃 3 号房屋 (金额 = 9),接着偷窃 5 号房屋 (金额 = 1)。
偷窃到的最高金额 = 2 + 9 + 1 = 12 。
打家劫舍Ⅱ【LeetCode 213】
【题目】给定一个非负整数数组,代表每个房子的现金数。如果两间相邻的房屋同时被小偷闯入,系统会自动报警。计算小偷在不触动警报装置的情况下,能够偷窃到的最高金额。与上一题不同的是:所有的房屋都围成一圈,这意味着第一个房屋和最后一个房屋是紧挨着的。
输入: [2,3,2]
输出: 3
解释: 你不能先偷窃 1 号房屋(金额 = 2),然后偷窃 3 号房屋(金额 = 2), 因为他们是相邻的。
打家劫舍Ⅲ【LeetCode 337】
【题目】给定一个二叉树,每个节点代表一个房子,节点的值代表房子的现金数。如果两间相邻的房屋同时被小偷闯入,系统会自动报警。计算小偷在不触动警报装置的情况下,能够偷窃到的最高金额。
输入: [3,4,5,1,3,null,1]
3
/ \
4 5
/ \ \
1 3 1输出: 9
解释: 小偷一晚能够盗取的最高金额 = 4 + 5 = 9.
粉刷房子 【LeetCode 256 ¥】
【题目】有n个房子,每个房子可以用红、蓝、绿3种颜色刷,每个房子用不同颜色刷的花费都不同,限制条件是相邻的房子不能用相同的颜色来刷,求刷完所有的房子的最低花费。
给定一个n*3的数组,代表每个房子用3种颜色刷的花费。所有数都是正整数。
Input: [[17,2,17],[16,16,5],[14,3,19]]
Output: 10
Explanation: Paint house 0 into blue, paint house 1 into green, paint house 2 into blue.
Minimum cost: 2 + 5 + 3 = 10.
【题解】
粉刷房子Ⅱ 【LeetCode 265 ¥】
【题目】有n个房子,每个房子可以用 k 种颜色刷(与上题的区别),每个房子用不同颜色刷的花费都不同,限制条件是相邻的房子不能用相同的颜色来刷,求刷完所有的房子的最低花费。
给定一个n*k的数组,代表每个房子用k种颜色刷的花费。所有数都是正整数。
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.
【题解】
栅栏涂色【LeetCode 276 ¥】
【题目】粉刷有n个柱子的栅栏,有 k 种颜色的油漆,规定最多2根连续的柱子可以用同一种颜色刷。返回共有多少种刷法。
Input: n = 3, k = 2
Output: 6
Explanation: Take c1 as color 1, c2 as color 2. All possible ways are:
post1 post2 post3
----- ----- ----- -----
1 c1 c1 c2
2 c1 c2 c1
3 c1 c2 c2
4 c2 c1 c1
5 c2 c1 c2
6 c2 c2 c1
【题解】