首先求出数组总和与goal的差值,这个差值无论是正还是负,我们都把他变成正数,然后按贪心的思想把它拆成尽可能少的满足limit限制的数即可。
class Solution {
public:
int minElements(vector<int>& nums, int limit, int goal) {
long long sum=accumulate(nums.begin(),nums.end(),0LL);
long long res=goal-sum;
res=abs(res);
return (res+limit-1)/limit;
}
};
时间复杂度:O(n)。
空间复杂度:O(1)。