本文主要是介绍330. 按要求补齐数组,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
题目描述:给定一个已排序的正整数数组 nums,和一个正整数 n 。从 [1, n] 区间内选取任意个数字补充到 nums 中,使得 [1, n] 区间内的任何数字都可以用 nums 中某几个数字的和来表示。请输出满足上述要求的最少需要补充的数字个数。
解题思路:如果区间[1,x-1]的区间都被覆盖,如果数组中有x,那么区间[1,2x-1]也会被覆盖,如果不存在就补充x,代码如下:
class Solution:def minPatches(self, nums: List[int], n: int) -> int:lens, idx = len(nums), 0res, x = 0, 1while(x<=n):if idx < lens and nums[idx] <= x:x += nums[idx]idx += 1else:x <<= 1res += 1return res
这篇关于330. 按要求补齐数组的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!