摘要:
完全背包 有N件物品和一个最多能背重量为W的背包。第i件物品的重量是weight[i],得到的价值是value[i] 。每件物品都有无限个(也就是可以放入背包多次),求解将哪些物品装入背包里物品价值总和最大。 完全背包和01背包问题唯一不同的地方就是,每种物品有无限件。 例子 背包最大重量为4。 物 阅读全文
摘要:
474. 一和零 给你一个二进制字符串数组strs和两个整数m和n。 请你找出并返回strs的最大子集的大小,该子集中最多有m个0和n个1。 如果x的所有元素也是y的元素,集合x是集合y的子集。 输入:strs = ["10", "0001", "111001", "1", "0"], m = 5, 阅读全文
摘要:
494. 目标和 给你一个整数数组nums和一个整数target。 向数组中的每个整数前添加 '+' 或 '-' ,然后串联起所有整数,可以构造一个表达式 : 例如,nums = [2, 1] ,可以在 2 之前添加 '+' ,在 1 之前添加 '-' ,然后串联起来得到表达式 "+2-1" 。 返 阅读全文
摘要:
416. 分割等和子集 给你一个只包含正整数的非空数组 nums 。请你判断是否可以将这个数组分割成两个子集,使得两个子集的元素和相等。 输入:nums = [1,5,11,5] 输出:true 解释:数组可以分割成 [1, 5, 5] 和 [11] 。 思路 本题有如下四点,因此能把01背包问题套 阅读全文
摘要:
01 背包 背包问题的理论基础是01背包。 有N件物品和一个最多能被重量为W 的背包。第i件物品的重量是weight[i],得到的价值是value[i] 。每件物品只能用一次,求解将哪些物品装入背包里物品价值总和最大。 例子: 背包最大重量为4。 | 物品 | 重量 | 价值 | | | | | | 阅读全文
摘要:
96. 不同的二叉搜索树 给你一个整数 n ,求恰由 n 个节点组成且节点值从 1 到 n 互不相同的二叉搜索树有多少种?返回满足题意的二叉搜索树的种数。 输入:n = 3 输出:5 思路 确定dp数组(dp table)以及下标的含义 dp[i] :1到i为节点组成的二叉搜索树的个数为dp[i]。 阅读全文
摘要:
343. 整数拆分 给定一个正整数 n,将其拆分为至少两个正整数的和,并使这些整数的乘积最大化。 返回你可以获得的最大乘积。 输入: 10 输出: 36 解释: 10 = 3 + 3 + 4, 3 × 3 × 4 = 36。 思路 动规五部曲 确定dp数组(dp table)以及下标的含义 dp[i 阅读全文
摘要:
62. 不同路径 一个机器人位于一个m x n网格的左上角 (起始点在下图中标记为 “Start” )。 机器人每次只能向下或者向右移动一步。机器人试图达到网格的右下角(在下图中标记为 “Finish” )。 问总共有多少条不同的路径? 输入:m = 3, n = 7 输出:28 思路 机器人从(0 阅读全文
摘要:
509. 斐波那契数 斐波那契数,通常用 F(n) 表示,形成的序列称为 斐波那契数列 。该数列由 0 和 1 开始,后面的每一项数字都是前面两项数字的和。也就是: F(0) = 0,F(1) = 1 F(n) = F(n - 1) + F(n - 2),其中 n > 1 给你 n ,请计算 F(n 阅读全文
摘要:
什么是动态规划 动态规划中每一个状态一定是由上一个状态推导出来的,这一点就区分于贪心,贪心没有状态推导,而是从局部直接选最优的。 背包问题 有N件物品和一个最多能背重量为W 的背包。第i件物品的重量是weight[i],得到的价值是value[i] 。每件物品只能用一次,求解将哪些物品装入背包里物品 阅读全文