给定数组和一个整数n,问需要补多少数,使这个数组内数组合的和可以覆盖1~n
贪心,每次都补入当前(数组中的前i-1个数)不能组合成的最小的数m。
假设数组中前i-1个数以及已经补入的数已经可以覆盖[1, m),这时候第i个数:
- <=m,那么与前面i-1个数的组合就可以覆盖[1, m+nums[i]),现在前i个数就可以达到m+nums[i]
- > m,那么补入m,前i-1个数可以达到2*m
C++ Code
1 | class Solution { |
给定数组和一个整数n,问需要补多少数,使这个数组内数组合的和可以覆盖1~n
贪心,每次都补入当前(数组中的前i-1个数)不能组合成的最小的数m。
假设数组中前i-1个数以及已经补入的数已经可以覆盖[1, m),这时候第i个数:
C++ Code
1 | class Solution { |