LeetCode 330-Patching Array

分析

  • miss记录当前集合已经完成[0, miss)所有组合。
  • 当前值nums[i]小于等于miss时,表示在集合中增加nums[i]可以使组合范围增大到[0, miss+nums[i])。
  • 当前值nums[i]大于miss时,增加nums[i]并不能让集合覆盖[0, miss+nums[i]),此时最好的方法是加miss,使得范围增大到[0, 2 * miss)。
class Solution {
public:
    int minPatches(vector<int>& nums, int n) {
        long miss = 1;
        int ret = 0, i = 0;
        while (miss <= n) {
            if (i < nums.size() && nums[i] <= miss) {
                miss += nums[i++];
            } else {
                miss <<= 1;
                ++ret;
            }
        }
        return ret;
    }
};

推荐阅读更多精彩内容

  • 背景 一年多以前我在知乎上答了有关LeetCode的问题, 分享了一些自己做题目的经验。 张土汪:刷leetcod...
    土汪阅读 11,966评论 0 33
  • Spring Cloud为开发人员提供了快速构建分布式系统中一些常见模式的工具(例如配置管理,服务发现,断路器,智...
    卡卡罗2017阅读 124,784评论 18 136
  • 人物简介 女主角:陈馨妍 身世:星辰学院的校花 男主角:陈皓天 身世:星辰学院的校草你...
    ccd712d4787e阅读 108评论 0 0
  • 夫妻之道有三等,感情的交流,以公理正义为原则;语言的沟通,以体谅包容为雅量;人我的相处,以不违情理为自然;金钱的运...
    艾米小宇宙阅读 122评论 0 1
  • 这么整天总结自己都让我不好意思了,因为我一整天啥也没干,愤世嫉俗,大写的丧。 没啥可说的,躺床上开始思考生活这事。...
    雌雄大盗阅读 101评论 4 0
  • AndroidStudio layout中的布局文件创建分类子目录 1、在layout目录下创建二级目录home、...
    DOG1994阅读 1,422评论 0 1