1679. Max Number of K-Sum Pairs

LeetCode 力扣

1. Description

You are given an integer array nums and an integer k.
In one operation, you can pick two numbers from the array whose sum equals k and remove them from the array.
Return the maximum number of operations you can perform on the array.

2. Example

Example 1

Input: nums = [1,2,3,4], k = 5
Output: 2
Explanation: Starting with nums = [1,2,3,4]:

  • Remove numbers 1 and 4, then nums = [2,3]
  • Remove numbers 2 and 3, then nums = []

There are no more pairs that sum up to 5, hence a total of 2 operations.

Example 2

Input: nums = [3,1,3,4,3], k = 6
Output: 1
Explanation: Starting with nums = [3,1,3,4,3]:

  • Remove the first two 3’s, then nums = [1,4,3]
    There are no more pairs that sum up to 6, hence a total of 1 operation.

3. Constraints

  • 1 <= nums.length <= 10$^5$
  • 1 <= nums[i] <= 10$^9$
  • 1 <= k <= 10$^9$

4. Solutions

Hash Table

n = nums.size()
Time complexity: O(n)
Space complexity: O(n)

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
class Solution {
public:
    int maxOperations(const vector<int> &nums, int k) {
        unordered_map<int, int> num_count;
        int valid_options = 0;
        for (int i = 0; i < nums.size(); ++i) {
            if (nums[i] < k) {
                if (num_count.contains(k - nums[i]) && num_count[k - nums[i]] > 0) {
                    --num_count[k - nums[i]];
                    ++valid_options;
                } else {
                    ++num_count[nums[i]];
                }
            }
        }

        return valid_options;
    }
};
comments powered by Disqus