2357. Make Array Zero by Subtracting Equal Amounts

Easy


You are given a non-negative integer array nums. In one operation, you must:

  • Choose a positive integer x such that x is less than or equal to the smallest non-zero element in nums.
  • Subtract x from every positive element in nums.

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




 class Solution:
    def minimumOperations(self, nums: List[int]) -> int:

        def get_min(nums):
            s = set(nums) 
            s = sorted(s)
            #min = sorted(s)[0] 
            min = s[0] if s[0] != 0 else s[1]
            return min

        step = 0

        while True:
            if nums[0] == 0 and (nums.count(nums[0]) == len(nums)):
                return step
            else:
                min = get_min(nums)
                nums = [value-min if value> 0 else value for value in nums ]
                step += 1

Random Note


From python 3.7 dict guarantees that order will be kept as they inserted, and popitem will use LIFO order but we need FIFO type system. so we need OrderedDict which have popIten(last = T/F) for this req. One thing, next(iter(dict)) will return the first key of the dict