您的位置:首页 > 其它

Leetcode no. 330

2016-04-12 16:37 337 查看
330. Patching Array

Given a sorted positive integer array nums and an integer n, 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


Return
1
.

Combinations of nums are
[1], [3], [1,3]
, which form possible sums
of:
1, 3, 4
.

Now if we add/patch
2
to nums, the combinations are:
[1],
[2], [3], [1,3], [2,3], [1,2,3]
.

Possible sums are
1, 2, 3, 4, 5, 6
, which now covers the range
[1,
6]
.

So we only need
1
patch.

Example 2:

nums =
[1, 5, 10]
, n =
20


Return
2
.

The two patches can be
[2, 4]
.

Example 3:

nums =
[1, 2, 2]
, n =
5


Return
0
.

public class Solution {
public int minPatches(int[] nums, int n) {
long cover=1;
int count=0, i=0;
while (cover<= n){
if (i< nums.length && cover>= nums[i])
cover+= nums[i++];
else {
count++;
cover+= cover;
}
}
return count;
}
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: