#1775

Equal Sum Arrays With Minimum Number of Operations

Medium
ArrayHash TableGreedyCountingHash MapArray
LeetCode ↗

Approaches

Brute ForceOptimal
Complexity Comparison
Brute ForceOptimal Solution
Time
O(n²)
O(n)
Space
O(1)
O(1)
💡

Intuition

Time O(n)Space O(1)

The optimal solution focuses on calculating the difference between the two sums and using a greedy approach to minimize the number of operations needed to equalize them. We can use a counting technique to track how many changes we can make effectively.

⚙️

Algorithm

5 steps
  1. 1Step 1: Calculate the sums of both arrays, sum1 and sum2.
  2. 2Step 2: Determine the difference, diff = abs(sum1 - sum2).
  3. 3Step 3: Create a frequency array to count occurrences of numbers 1 to 6 in both arrays.
  4. 4Step 4: Calculate the maximum possible increase or decrease for each number and use it to minimize operations.
  5. 5Step 5: Iterate through the frequency array to find the minimum number of operations needed to cover the difference.
solution.py20 lines
1# Full working Python code
2
3def min_operations(nums1, nums2):
4    sum1 = sum(nums1)
5    sum2 = sum(nums2)
6    if sum1 == sum2:
7        return 0
8    diff = abs(sum1 - sum2)
9    count = [0] * 7
10    for num in nums1:
11        count[num] += 1
12    for num in nums2:
13        count[num] -= 1
14    operations = 0
15    for i in range(6, 0, -1):
16        while count[i] > 0 and diff > 0:
17            diff -= i
18            operations += 1
19            count[i] -= 1
20    return operations if diff <= 0 else -1

Complexity note: This complexity is linear because we only traverse the arrays a couple of times and use a fixed-size frequency array.

  • 1Understanding the difference between sums is crucial for determining how to adjust the arrays.
  • 2Using a frequency count allows us to quickly assess how many operations we can perform.

Solutions and explanations are original Tejav content. Problem titles © LeetCode — use the LeetCode button above for the full problem statement.