痛苦面具 看了解析才做出来
int minPatches(int* nums, int numsSize, int n) {
int cnt=0; //引入cnt用来计数
long long x; //看了解析,用long long防止数值过大
int index=0; //引入下标
//主要判断方式:若[1,x)被覆盖,则区间内所有数加x都被覆盖,即[1,2x)被覆盖
for( x=1; x <= n;) {
//如果找到数组中有小于等于x的数,则区间扩大nums[index],下标加一
//直到[1,x)内所有数字都被覆盖,即[1,2x)内所有数都被覆盖,刷新当前范围并计数
if ( index < numsSize && nums[index] <= x ) {
x+=nums[index];
index++;
} else {
x*=2;
cnt++;
}
}
return cnt;
}