背包问题是一系列问题的统称,具体包括:01背包、完全背包、多重背包、分组背包等(仅需掌握前两种,后面的为竞赛级题目) 下面来研究01背包 实际上即使是最经典的01背包,也不会直接出现在题目中,一般是融入到其他的题目背景中再考察 因为是学习原理,所以先跳过最原始的问题模板来学。 01背包的原始题意是:(标准的背包...
我们创建dp[i][j]二维数组,其中 i 表示选择的物品编号i,j 表示的是背包的容量j。 在这道题中,我们可以把数组的某一个元素nums[i]看作物品i;然后我们把数组的元素之和看作整个背包的最大容量,那么此时 j 就表示了在容量 j 下的背包的子容量;并且我们把物品的价值也看作是元素值。 dp[i][j]:表示了容...
现有编号从 0 到 n - 1 的 n 个背包。 给你两个下标从 0 开始的整数数组capacity和rocks。 第 i 个背包最大可以装capacity[i]块石头,当前已经装了rocks[i]块石头。 另给你一个整数additionalRocks,表示你可以放置的额外石头数量,石头可以往任意背包中放置。 请你将额外的石头放入一些背包中,并返回放置后装...
就是说你不能每天看到什么题目就刷什么题目,而是要有计划的对题目进行先后排序。当时我刷题是在Lintcode上面进行的,就是先利用他的分类功能对题目进行类型分类,再根据难易进行排序,一段时间就专注在一种题目类型上,然后根据自己的水平,从容易或者中等难度开始刷起,一点点增加难度值。这样子的话更容易对一种类型的...
这是根据LeetCode大佬noone_所编写的《有没有人一起从零开始刷力扣》优化的刷题表格,在原表格的基础上增加了引导链接,点击题目编号即可打开对应的题目。笔者也在刷,也算是督促自己学习。如果遇见其他好的题目我也会增添在里面。 感谢noone_大佬用心维护了这样一份刷题列表,对学习的帮助很大。
作者@noone_的原帖:https://leetcode.cn/circle/article/48kq9d/
题目 + 一个公司在全国有 n +个分部,它们之间有的有道路连接。一开始,所有分部通过这些道路两两之间互相可以到达。 + 公司意识到在分部之间旅行花费了太多时间,所以它们决定关闭一些分部(也可能不关闭任何分部),同时保证剩下的分部之间两两互相可以到达且最远距离不超过 +maxDistance。 + 两个分部之间的 距离 是...
这显然符合「完全背包」模型。 目前我们学过的两类背包问题(01 背包 & 完全背包)的原始状态定义都是两维: 第一维 i 代表物品编号 第二维 j 代表容量 其中第二维 j 又有「不超过容量 j 」和「容量恰好为 j」两种定义。 本题要我们求「恰好」凑出 n 所需要的最少个数。