「每日LeetCode」2023年2月24日

本文最后更新于:2023年3月19日 晚上

2357.使数组中所有元素都等于零

2357.使数组中所有元素都等于零

Category Difficulty Likes Dislikes
algorithms Easy (74.20%) 51 -

Tags
Companies
给你一个非负整数数组 nums 。在一步操作中,你必须:

  • 选出一个正整数 x ,x 需要小于或等于 nums 中 最小非零 元素。
  • nums 中的每个正整数都减去 x。

返回使 nums 中所有元素都等于_ _0 需要的 最少 操作数。

示例 1:
输入:nums = [1,5,0,3,5] 输出:3 解释: 第一步操作:选出 x = 1 ,之后 nums = [0,4,0,2,4] 。 第二步操作:选出 x = 2 ,之后 nums = [0,2,0,0,2] 。 第三步操作:选出 x = 2 ,之后 nums = [0,0,0,0,0] 。
示例 2:
输入:nums = [0] 输出:0 解释:nums 中的每个元素都已经是 0 ,所以不需要执行任何操作。

提示:

  • 1 <= nums.length <= 100
  • 0 <= nums[i] <= 100

Discussion | Solution

思路

代码的主要思路是先将数组排序,然后遍历数组,如果当前元素减去前面的元素之和小于等于 0,则不进行任何操作,否则将当前元素减去前面的元素之和,并将操作次数加 1。最后返回操作次数。

解答

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
/*
* @lc app=leetcode.cn id=2357 lang=javascript
*
* [2357] 使数组中所有元素都等于零
*/

// @lc code=start
/**
* @param {number[]} nums
* @return {number}
*/
var minimumOperations = function (nums) {
let res = 0,
total = 0;
nums.sort((a, b) => +a - +b);
for (const num of nums) {
if (num - total <= 0) continue;
total += num - total;
res++;
}
return res;
};
// @lc code=end