随笔分类 - 动态规划(Dp)
摘要:513. 完美平方 中文English 给一个正整数 n, 请问最少多少个完全平方数(比如1, 4, 9...)的和等于n。 样例 样例 1: 输入: 12 输出: 3 解释: 4 + 4 + 4 样例 2: 输入: 13 输出: 2 解释: 4 + 9 输入测试数据 (每行一个参数)如何理解测试数
阅读全文
摘要:602. 俄罗斯套娃信封 中文English 给一定数量的信封,带有整数对 (w, h) 分别代表信封宽度和高度。一个信封的宽高均大于另一个信封时可以放下另一个信封。求最大的信封嵌套层数。 样例 样例 1: 输入:[[5,4],[6,4],[6,7],[2,3]] 输出:3 解释: 最大的信封嵌套层
阅读全文
摘要:393. 买卖股票的最佳时机 IV 中文English 给定数组 prices, 其中第 i 个元素代表某只股票在第 i 天第价格. 你最多可以完成 k 笔交易. 问最大的利润是多少? 样例 样例 1: 输入: k = 2, prices = [4, 4, 6, 1, 1, 4, 2 ,5] 输出:
阅读全文
摘要:151. 买卖股票的最佳时机 III 中文English 假设你有一个数组,它的第i个元素是一支给定的股票在第i天的价格。设计一个算法来找到最大的利润。你最多可以完成两笔交易。 样例 样例 1 输入 : [4,4,6,1,1,4,2,5] 输出 : 6 注意事项 你不可以同时参与多笔交易(你必须在再
阅读全文
摘要:534. 打劫房屋 II 中文English 在上次打劫完一条街道之后,窃贼又发现了一个新的可以打劫的地方,但这次所有的房子围成了一个圈,这就意味着第一间房子和最后一间房子是挨着的。每个房子都存放着特定金额的钱。你面临的唯一约束条件是:相邻的房子装着相互联系的防盗系统,且 当相邻的两个房子同一天被打
阅读全文
摘要:516. 房屋染色 II 中文English 这里有n个房子在一列直线上,现在我们需要给房屋染色,共有k种颜色。每个房屋染不同的颜色费用也不同,你需要设计一种染色方案使得相邻的房屋颜色不同,并且费用最小。 费用通过一个nxk 的矩阵给出,比如cost[0][0]表示房屋0染颜色0的费用,cost[1
阅读全文
摘要:515. 房屋染色 中文English 这里有n个房子在一列直线上,现在我们需要给房屋染色,分别有红色蓝色和绿色。每个房屋染不同的颜色费用也不同,你需要设计一种染色方案使得相邻的房屋颜色不同,并且费用最小,返回最小的费用。 费用通过一个nx3 的矩阵给出,比如cost[0][0]表示房屋0染红色的费
阅读全文
摘要:115. 不同的路径 II 中文English "不同的路径" 的跟进问题: 现在考虑网格中有障碍物,那样将会有多少条不同的路径? 网格中的障碍和空位置分别用 1 和 0 来表示。 样例 Example 1: Input: [[0]] Output: 1 Example 2: Input: [[0,
阅读全文
摘要:191. 乘积最大子序列 中文English 找出一个序列中乘积最大的连续子序列(至少包含一个数)。 样例 样例 1: 输入:[2,3,-2,4] 输出:6 样例 2: 输入:[-1,2,4,1] 输出:8 注意事项 数组长度不超过20000乘积最大的子序列的积,小于2147483647 输入测试数
阅读全文
摘要:116. 跳跃游戏 中文English 给出一个非负整数数组,你最初定位在数组的第一个位置。 数组中的每个元素代表你在那个位置可以跳跃的最大长度。 判断你是否能到达数组的最后一个位置。 样例 样例 1 输入 : [2,3,1,1,4] 输出 : true 样例 2 输入 : [3,2,1,0,4]
阅读全文
摘要:136. 分割回文串 中文English 给定字符串 s, 需要将它分割成一些子串, 使得每个子串都是回文串. 返回所有可能的分割方案. 样例 样例 1: 输入: "a" 输出: [["a"]] 解释: 字符串里只有一个字符, 也就只有一种分割方式 (就是它本身) 样例 2: 输入: "aab" 输
阅读全文
摘要:512. 解码方法 中文English 有一个消息包含A-Z通过以下规则编码 'A' -> 1 'B' -> 2 ... 'Z' -> 26 现在给你一个加密过后的消息,问有几种解码的方式 样例 样例 1: 输入: "12" 输出: 2 解释: 它可以被解码为 AB (1 2) 或 L (12).
阅读全文
摘要:108. 分割回文串 II 中文English 给定字符串 s, 需要将它分割成一些子串, 使得每个子串都是回文串. 最少需要分割几次? 样例 样例 1: 输入: "a" 输出: 0 解释: "a" 本身就是回文串, 无需分割 样例 2: 输入: "aab" 输出: 1 解释: 将 "aab" 分割
阅读全文
摘要:76. 最长上升子序列 中文English 给定一个整数序列,找到最长上升子序列(LIS),返回LIS的长度。 样例 样例 1: 输入: [5,4,1,2,3] 输出: 3 解释: LIS 是 [1,2,3] 样例 2: 输入: [4,2,4,5,3,7] 输出: 4 解释: LIS 是 [2,4,
阅读全文
摘要:114. 不同的路径 中文English 有一个机器人的位于一个 m × n 个网格左上角。 机器人每一时刻只能向下或者向右移动一步。机器人试图达到网格的右下角。 问有多少条不同的路径? 样例 Example 1: Input: n = 1, m = 3 Output: 1 Explanation:
阅读全文
摘要:669. 换硬币 中文English 给出不同面额的硬币以及一个总金额. 写一个方法来计算给出的总金额可以换取的最少的硬币数量. 如果已有硬币的任意组合均无法与总金额面额相等, 那么返回 -1. 样例 样例1 输入: [1, 2, 5] 11 输出: 3 解释: 11 = 5 + 5 + 1 样例2
阅读全文