原题链接:
https://leetcode.cn/problems/make-array-zero-by-subtracting-equal-amounts/
解题思路:
- 该题要求每次都减去最小的非零元素,因此可以先将数组排序
- 之后遍历数组,依次将第
i
个非零元素之后的元素,都减去nums[i]
即可
/**
* @param {number[]} nums
* @return {number}
*/
var minimumOperations = function (nums) {
nums.sort() // 先将数组排序
let count = 0 // 统计进行减法的次数
// 从第一个数字开始计算
for (let i = 0; i < nums.length; i++) {
// 只有不为0的数字才需要计算
if (nums[i]) {
// 将i之后的每个数字都减去nums[i]
for (let j = i + 1; j < nums.length; j++) {
nums[j] -= nums[i]
}
// 统计计算次数
count++
}
}
return count
}
复杂度分析:
时间复杂度:O(n^2)
空间复杂度:O(1)