8.19 - hard - 68

330. Patching Array

又是一道greedy的题目

class Solution(object):
    def minPatches(self, nums, n):
        """
        :type nums: List[int]
        :type n: int
        :rtype: int
        """
        patch = 0
        i = 0
        miss = 1
        while miss <= n: #* invariant: [1,miss) is covered */
            if i >= len(nums) or miss < nums[i]:
                miss += miss # patch miss, now we reach miss-1 (already covered) + miss + 1 (next miss)=2*miss
                patch += 1
            else:
                miss += nums[i] # miss >= nums[i], [1,miss) + nums[i] covers miss and move forward
                i += 1

        return patch
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容