Journal Archive

/**
 * @param {number[]} nums
 * @param {number} k
 * @return {number}
 */
var maxOperations = function(nums, k) {
	// keep track of prev nums
    let remainders = new Map();
    let operations = 0;
    
	// one loop
    for (let i = 0; i < nums.length; i++) {
        let remainder = k - nums[i];
        
		// check if seen the remainder already
        if (remainders.has(remainder)) {
            let amount = remainders.get(remainder)
            if (amount > 0) {
                operations++;
                amount--;
                if (amount <= 0) remainders.delete(remainder);
                else remainders.set(remainder, amount);
            }
        } else {
            if (remainders.has(nums[i])) {
                remainders.set(nums[i], remainders.get(nums[i]) + 1)
            } else {
                remainders.set(nums[i], 1)
            }
        }
        
    }
    return operations;
};

Day 42: Solving one of LeetCode problems

1679. Max Number of K-Sum Pairs Difficulty - Medium

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.

 

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.