原题链接:
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)