再加一个数 ,范围变为 R = 2*R+1;
class Solution {
public:
int minPatches(vector<int>& nums, int n) {
int L = nums.size();
long long MAX = 0; // 可以到达的最大值
long long N = n;
int ans = 0;
int id = 0;
while(MAX < N && id < L){
if(MAX + 1 >= nums[id]){
MAX += nums[id++];
}else{
ans ++;
MAX += MAX + 1;
}
}
if(MAX >= N) return ans;
while(MAX < N){
ans++;
MAX += MAX+1;
}
return ans;
}
};
本文探讨了一个C++算法问题,旨在通过优化补丁数量来达到目标数值。通过对给定数值列表的处理,算法能够高效地计算出达到指定数值所需的最少补丁数。该算法采用动态调整策略,平衡了补丁大小与所需补丁数量之间的关系。

被折叠的 条评论
为什么被折叠?



