这一题不是特别好理解,用的是贪心算法,算是我的初识贪心算法,慢慢建立概念。
执行用时 :2 ms, 在所有 Java 提交中击败了91.23%的用户
内存消耗 :39.2 MB, 在所有 Java 提交中击败了30.77%的用户
Code:
class Solution {
public int minPatches(int[] nums, int n) {
int i=0,patches=0;
long miss=1;
while(miss<=n){
if(i<nums.length&&nums[i]<=miss){
miss+=nums[i];
i++;
}else{
miss+=miss;
patches++;
}
}
return patches;
}
}
时间复杂度 : O(m+logn)。在每次迭代中,我们或者增加 i ,或者将 miss 加倍。 i增加的总数为 mm, miss 加倍的总数为 \log nlogn。
空间复杂度 : O(1)O(1)。 只需要三个变量:patches,i 和 miss。