码迷,mamicode.com
首页 > 其他好文 > 详细

LeetCode-330.Patching Array

时间:2016-03-10 12:42:12      阅读:116      评论:0      收藏:0      [点我收藏+]

标签:

/**
     * nums的所有元素,假设最大能连续形成[1,sum] 当增加一个element的时候
     * 会变成 [1,sum] [element+1,sum+element]两个区间,这两个区间有以下可能性:
     *  1 相交: element < sum
     *  2 连续: element = sum  是保持连续,并使得加的元素最少的最大值
     *  3 相离: element > sum  大于sum就不连续了
     * */
    private int minPatches(int[] nums, int n) {
        long sum = 1;//1 是必需得有,因为要形成[1,n]的分布,肯定得有1,如果nums没有,就要把其加上
        int index= 0;
        int add = 0;
        while(sum <= n ){
            if(index < nums.length && nums[index] <=sum){
                sum += nums[index];
                index++;
            }
            else{
                sum += sum;
                add++;
            }
        }
        return add;
    }

 

LeetCode-330.Patching Array

标签:

原文地址:http://www.cnblogs.com/nashiyue/p/5261208.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!