![](https://i-blog.csdnimg.cn/blog_migrate/90c9c5a995785a4e8b06a02a4970ece1.png)
假设current为[0,n]中最小的不能组成的数,[0,current)能够组成,如果存在num <= current,则可以将num加入到[0,current)中组成[0, current + num),否则,必须加入current这个数到数组中,此时能够组成的数变为[0,current + current)。
class Solution(object):
def minPatches(self, nums, n):
"""
:type nums: List[int]
:type n: int
:rtype: int
"""
current = 1
idx = 0
add = 0
while current <= n:
if idx < len(nums) and nums[idx] <= current:
current += nums[idx]
idx += 1
else:
add += 1
current += current
return add