/**
* 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;
}
相关文章
- JAVA学习笔记——Array工具类以及基本类型包装类
- 【Todo】【转载】Scala中Array, List, Tuple的区别
- Array对象的方法
- Namespace, string, vector and array
- #yyds干货盘点#ES6数组的扩展--Array.from()和Array.of()
- QQ浏览器安卓5.8版本的Uint8Array API有bug
- 84. Largest Rectangle in Histogram (Array, Stack; DP)
- 【LeetCode】Find Minimum in Rotated Sorted Array 找到旋转后有序数组中的最小值
- 【Java】在java下Array.Sort和(自己写的)快速排序到底那个快?
- 26 Remove Duplicates from Sorted Array