LeetCode 5698. 构成特定和需要添加的最少元素(数学)

题意:

给你一个整数数组 nums ,和两个整数 limit 与 goal 。
数组 nums 有一条重要属性:abs(nums[i]) <= limit 。

返回使数组元素总和等于 goal 所需要向数组中添加的 最少元素数量 ,
添加元素 不应改变 数组中 abs(nums[i]) <= limit 这一属性。

注意,如果 x >= 0 ,那么 abs(x) 等于 x ;否则,等于 -x 。

数据范围:
1 <= nums.length <= 1e5
1 <= limit <= 1e6
-limit <= nums[i] <= limit
-1e9 <= goal <= 1e9

解法:

对nums数组求和,设sum和target的差值为dif,(dif是绝对值,因此>=0),
那么ans=dif/limit+(dif%limit!=0).

code:

class Solution {
public:
    int minElements(vector<int>& a, int x, int t) {
        int n=a.size();
        long long sum=0;
        for(auto i:a)sum+=i;
        long long dif=abs(t-sum);
        int ans=0;
        ans+=dif/x;
        if(dif%x)ans++;
        return ans;
    }
};

你可能感兴趣的:(LeetCode 5698. 构成特定和需要添加的最少元素(数学))