Given a sorted positive integer arraynumsand an integern, add/patch elements to the array such that any number in range[1, n]inclusive can be formed by the sum of some elements in the array. Return the minimum number of patches required.
Example 1:
nums=[1, 3],n=6
Return1.
Combinations ofnumsare[1], [3], [1,3], which form possible sums of:1, 3, 4.
Now if we add/patch2tonums, the combinations are:[1], [2], [3], [1,3], [2,3], [1,2,3].
Possible sums are1, 2, 3, 4, 5, 6, which now covers the range[1, 6].
So we only need1patch.
Example 2:
nums=[1, 5, 10],n=20
Return2.
The two patches can be[2, 4].
classSolution{publicintminPatches(int[]nums,intn){long miss =1;int count =0;int index =0;while(miss <= n){if(index <nums.length&& nums[index]<= miss){ miss += nums[index];++index;}else{ miss += miss;++count;}}return count;}}