加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

[Swift]LeetCode330. 按要求补齐数组 | Patching Array

发布时间:2020-12-14 05:06:10 所属栏目:百科 来源:网络整理
导读: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 re

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:

Input: nums =,n = 
Output: 1 
Explanation:
Combinations of nums are,which form possible sums of: .
Now if we add/patch  to nums,the combinations are: .
Possible sums are,which now covers the range .
So we only need  patch.[1,3]6[1],[3],[1,3]1,3,42[1],[2],3],[2,2,4,5,6[1,6]1

Example 2:

Input: nums =,n = 
Output: 2
Explanation: The two patches can be .
[1,10]20[2,4]

Example 3:

Input: nums =,n = 
Output: 0[1,2]5

给定一个已排序的正整数数组?nums,和一个正整数?n 。从?[1,n]?区间内选取任意个数字补充到?nums?中,使得?[1,n]?区间内的任何数字都可以用?nums?中某几个数字的和来表示。请输出满足上述要求的最少需要补充的数字个数。

示例?1:

输入: nums =,n = 
输出: 1 
解释:
根据 nums?里现有的组合?,可以得出?。
现在如果我们将??添加到?nums 中,?组合变为: 。
其和可以表示数字?,能够覆盖??区间里所有的数。
所以我们最少需要添加一个数字。[1,6]

示例 2:

输入: nums =,n = 
输出: 2
解释: 我们需要添加?。
[1,4]

示例?3:

输入: nums =,n = 
输出: 0[1,2]5

52ms
 1 class Solution {
 2     func minPatches(_ nums: [Int],_ n: Int) -> Int {
 3         
 4         var miss = 1
 5         var res = 0
 6         var i = 0
 7         let l = nums.count
 8         while miss <= n {
 9             if i < l && nums[i] <= miss {
10                 miss += nums[i]
11                 i+=1
12             }else {
13                 miss <<= 1
14                 res += 1
15             }
16         }
17         return res
18     }
19 }

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读