苦中作乐
今天在牛客网看到一位炒鸡可爱的同学的帖子。

腾讯云智也是腾讯,运营开发也是开发,长沙也是深圳,go 也是 java,内包也是正职 🤣🤣🤣
同学们的苦中作乐和幽默感是真的熟练,熟练得让人心疼。
另外一位同学的留言,在幽默之余,尽是无奈。

大三上:非后端不干,大三下:测试开发也是开发。
这几届的应届生是真的难,希望这种写实类的段子会越来越少吧。
...
回归主线。
五一假期,给大家安排一些「难度不大」的算法题。
题目描述
平台:LeetCode
题号:1785
给你一个整数数组 nums
,和两个整数 limit
与 goal
。
数组 nums
有一条重要属性:abs(nums[i]) <= limit
。
返回使数组元素总和等于 goal
所需要向数组中添加的 最少元素数量 ,添加元素 不应改变 数组中 abs(nums[i]) <= limit
这一属性。
注意,如果 x >= 0
,那么 abs(x)
等于 x
;否则,等于 -x
。
示例 1:
输入:nums = [1,-1,1], limit = 3, goal = -4
输出:2
解释:可以将 -2 和 -3 添加到数组中,数组的元素总和变为 1 - 1 + 1 - 2 - 3 = -4 。
示例 2:
输入:nums = [1,-10,9,1], limit = 100, goal = 0
输出:1
提示:
贪心
对于 nums
而言,我们可以先通过
的遍历求得其原总和 sum
为何值。
若 sum
与 goal
不等,我们可以按照「贪心」的方式里添加元素。
由于添加的元素需要满足 abs(x) <= limit
要求,因此我们添加数的范围在
之间。
为确保添加的元素最小,我们应当优先添加能够有效抵消两者差值的数值(添加 或 ),添加个数为 。
Java 代码:
class Solution {
public int minElements(int[] nums, int limit, int goal) {
long sum = 0;
for (int x : nums) sum += x;
return (int) ((Math.abs(sum - goal) + limit - 1) / limit);
}
}
TypeScript 代码:
function minElements(nums: number[], limit: number, goal: number): number {
let sum = 0
for (const x of nums) sum += x
return Math.ceil(Math.abs(sum - goal) / limit)
}
Python 代码:
class Solution:
def minElements(self, nums: List[int], limit: int, goal: int) -> int:
sumv = sum(nums)
return (abs(sumv - goal) + limit - 1) // limit
-
时间复杂度: -
空间复杂度:
最后
给大伙通知一下 📢 :
全网最低价 LeetCode 会员目前仍可用 ~
📅 年度会员:有效期加赠两个月!!; 季度会员:有效期加赠两周!!
🧧 年度会员:获 66.66 现金红包!!; 季度会员:获 22.22 现金红包!!
🎁 年度会员:参与当月丰厚专属实物抽奖(中奖率 > 30%)!!
专属链接:leetcode.cn/premium/?promoChannel=acoier
我是宫水三叶,每天都会分享算法知识,并和大家聊聊近期的所见所闻。
欢迎关注,明天见。
更多更全更热门的「笔试/面试」相关资料可访问排版精美的 合集新基地 🎉🎉