您的位置:首页 > 其它

330. Patching Array【M】【84】【leetcode】

2016-03-18 12:22 447 查看
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
.

Credits:

Special thanks to @dietpepsi for adding this problem and creating all test cases.

Subscribe to see which companies asked this question

class Solution(object):
def minPatches(self, nums, n):
res = 0
cur = 1
total = 1
i = 0
while total <= n:
if i < len(nums) and nums[i] <= total : #cur not in nums:
#res += 1
total += nums[i]
i += 1
else:
res += 1
total += total
#print nums,total
return res
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: