GuilinDev

Lc1785

05 August 2008

1785. Minimum Elements to Add to Form a Given Sum

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

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

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

先全部加起来,然后跟target做差然后除一下limit就可以return了。能整除就直接return 不能就向上取整。但是要注意是不能用int的,要不然有一个测试用例过不了

1
2
3
4
5
6
7
8
9
10
11
12
13
class Solution {
    public int minElements(int[] nums, int limit, int goal) {
        long sum = 0;
        for (long num : nums) {
            sum += num;
        }
        long a = Math.abs((goal - sum)) / Math.abs(limit);
        if (Math.abs((goal - sum)) % Math.abs(limit) == 0) {
            return (int) a;
        }
        return (int) a + 1;
    }
}