ome/img/nav3_on.png">
APP
系统平台
  • 建站知识
  • 联系我们
  • 咨询热线 :
    028-86922220

    疆括仕网站建设,新征程启航

    为企业提供网站建设、域名注册、服务器等服务

    如何用leetcode实现按要求补齐数组

    本篇内容介绍了“如何用leetcode实现按要求补齐数组”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!

    网站建设哪家好,找创新互联建站!专注于网页设计、网站建设、微信开发、成都微信小程序、集团企业网站建设等服务项目。为回馈新老客户创新互联还提供了东宝免费建站欢迎大家使用!

    一、题目内容

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

    示例 1:

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

    示例 2:

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

    示例 3:

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

    二、解题思路

    每次检查数组里没有的数字:

    如果当前nums的数字<当前不在数组里的数字,则新的不在数组里的数字=旧的不在数组里的数字+当前nums的数字,则检查下一个nums里的数字;

    否则,新的不在数组里的数字=2 * 旧的不在数组里的数字,且count加1;

    三、代码

    class Solution:
        def minPatches(self, nums: list, n: int) -> int:
            count = 0
            num_which_is_not_in_nums = 1
            idx = 0
            while num_which_is_not_in_nums <= n:
                if idx < len(nums) and nums[idx] <= num_which_is_not_in_nums:
                    num_which_is_not_in_nums += nums[idx]
                    idx += 1
                else:
                    count += 1
                    num_which_is_not_in_nums += num_which_is_not_in_nums
            return count
    
    
    if __name__ == '__main__':
        nums = [1,3,10, 20]
        n = 50
        s = Solution()
        ans = s.minPatches(nums, n)
        print(ans)

    “如何用leetcode实现按要求补齐数组”的内容就介绍到这里了,感谢大家的阅读。如果想了解更多行业相关的知识可以关注创新互联网站,小编将为大家输出更多高质量的实用文章!


    本文题目:如何用leetcode实现按要求补齐数组
    网站网址:http://tyhkzb.com/article/ispeec.html
    在线咨询
    服务热线
    服务热线:028-86922220
    TOP