Skip to content

Commit c19d0ba

Browse files
authored
Create Readme.md
1 parent 4ead70c commit c19d0ba

File tree

1 file changed

+9
-0
lines changed
  • Dynamic_Programming/1981.Minimize-the-Difference-Between-Target-and-Chosen-Elements

1 file changed

+9
-0
lines changed
Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,9 @@
1+
### 1981.Minimize-the-Difference-Between-Target-and-Chosen-Elements
2+
3+
此题类似于分组背包问题。每组物品里只能取一个,求如何选取物品最接近target。
4+
5+
背包问题的思想核心就是以容量为考察点。选择完第一组物品会占据哪些容量。将这些可能的容量,再与第二组物品两两组合,得到第二轮结束后可能会占据哪些容量。依次处理完所有组,就可以得到最终可能会占据哪些容量,再挑选其中与target最接近的一个。
6+
7+
因为最多有70组,每个物品最多是70,最终总容量的可能性是```70*70=4900```,所以每一个回合需要遍历4900种容量,并且与下一组的70个物品两两组合。总共70个回合。所以总的时间复杂度是```4900*70*70```. 这样的复杂度太大了,哪里可以优化呢?
8+
9+
本题的target不超过800,所以每一个回合时,任何大于target的容量,我们只保留最小的一个即可。因为其他更大的容量(随着更多物品的累积)必然与target的差距会更大。所以每一个回合我们只需要遍历801种容量即可。于是时间复杂度就降下来了。

0 commit comments

Comments
 (0)