05 August 2008
给一个整数数组 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;
}
}