Welcome to Subscribe On Youtube
2357. Make Array Zero by Subtracting Equal Amounts
Description
You are given a non-negative integer array nums
. In one operation, you must:
- Choose a positive integer
x
such thatx
is less than or equal to the smallest non-zero element innums
. - Subtract
x
from every positive element innums
.
Return the minimum number of operations to make every element in nums
equal to 0
.
Example 1:
Input: nums = [1,5,0,3,5] Output: 3 Explanation: In the first operation, choose x = 1. Now, nums = [0,4,0,2,4]. In the second operation, choose x = 2. Now, nums = [0,2,0,0,2]. In the third operation, choose x = 2. Now, nums = [0,0,0,0,0].
Example 2:
Input: nums = [0] Output: 0 Explanation: Each element in nums is already 0 so no operations are needed.
Constraints:
1 <= nums.length <= 100
0 <= nums[i] <= 100
Solutions
-
class Solution { public int minimumOperations(int[] nums) { boolean[] s = new boolean[101]; s[0] = true; int ans = 0; for (int x : nums) { if (!s[x]) { ++ans; s[x] = true; } } return ans; } }
-
class Solution { public: int minimumOperations(vector<int>& nums) { bool s[101]{}; s[0] = true; int ans = 0; for (int& x : nums) { if (!s[x]) { ++ans; s[x] = true; } } return ans; } };
-
class Solution: def minimumOperations(self, nums: List[int]) -> int: return len({x for x in nums if x})
-
func minimumOperations(nums []int) (ans int) { s := [101]bool{true} for _, x := range nums { if !s[x] { s[x] = true ans++ } } return }
-
function minimumOperations(nums: number[]): number { const set = new Set(nums); set.delete(0); return set.size; }
-
use std::collections::HashSet; impl Solution { pub fn minimum_operations(nums: Vec<i32>) -> i32 { let mut set = nums.iter().collect::<HashSet<&i32>>(); set.remove(&0); set.len() as i32 } }