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
xsuch thatxis less than or equal to the smallest non-zero element innums. - Subtract
xfrom 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 <= 1000 <= 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 } }