Check if the given array can be reduced to zeros with the given operation performed given number of times in Python

We need to check if an array can be reduced to all zeros by performing a specific operation exactly k times. The operation subtracts the smallest non-zero element from all non-zero elements in the array.

Understanding the Problem

Let's break down how the operation works ?

  • Operation: Find the smallest non-zero element and subtract it from all non-zero elements
  • Goal: Reduce all elements to zero in exactly k operations
  • Key insight: Each operation eliminates one distinct value from the array

Example Walkthrough

Consider the array [2, 2, 3, 5] with k = 3 ?

# Initial array: [2, 2, 3, 5]
# Distinct elements: {2, 3, 5} = 3 elements

# Operation 1: Subtract 2 (smallest)
# [2, 2, 3, 5] ? [0, 0, 1, 3]

# Operation 2: Subtract 1 (smallest non-zero)
# [0, 0, 1, 3] ? [0, 0, 0, 2]

# Operation 3: Subtract 2 (smallest non-zero)
# [0, 0, 0, 2] ? [0, 0, 0, 0]

# Result: All zeros in exactly 3 operations

Solution Logic

The key insight is that each operation eliminates exactly one distinct value. Therefore, we can reduce the array to zeros in exactly k operations if and only if there are exactly k distinct elements.

def can_reduce_to_zeros(nums, k):
    distinct_elements = set(nums)
    return len(distinct_elements) == k

# Test with the example
nums = [2, 2, 3, 5]
k = 3
result = can_reduce_to_zeros(nums, k)
print(f"Array: {nums}")
print(f"k: {k}")
print(f"Can reduce to zeros: {result}")
Array: [2, 2, 3, 5]
k: 3
Can reduce to zeros: True

More Examples

Let's test with different scenarios ?

def can_reduce_to_zeros(nums, k):
    distinct_elements = set(nums)
    return len(distinct_elements) == k

# Example 1: More operations than distinct elements
nums1 = [1, 1, 2, 2]
k1 = 3
print(f"Array: {nums1}, k: {k1} ? {can_reduce_to_zeros(nums1, k1)}")

# Example 2: Fewer operations than distinct elements  
nums2 = [1, 2, 3, 4, 5]
k2 = 3
print(f"Array: {nums2}, k: {k2} ? {can_reduce_to_zeros(nums2, k2)}")

# Example 3: Perfect match
nums3 = [5, 3, 1, 3, 5, 1]
k3 = 3
print(f"Array: {nums3}, k: {k3} ? {can_reduce_to_zeros(nums3, k3)}")
Array: [1, 1, 2, 2], k: 3 ? False
Array: [1, 2, 3, 4, 5], k: 3 ? False
Array: [5, 3, 1, 3, 5, 1], k: 3 ? True

Why This Works

The algorithm works because ?

  • Each operation removes the smallest distinct value completely
  • After k operations, we eliminate k distinct values
  • If there are more than k distinct values, we can't finish in k operations
  • If there are fewer than k distinct values, we finish early and can't perform exactly k operations

Time and Space Complexity

Aspect Complexity Explanation
Time O(n) Creating set from array
Space O(n) Storing distinct elements in set

Conclusion

To check if an array can be reduced to zeros in exactly k operations, simply count the distinct elements. The array can be reduced if and only if the number of distinct elements equals k.

Updated on: 2026-03-25T14:32:46+05:30

214 Views

Kickstart Your Career

Get certified by completing the course

Get Started
Advertisements