Skip to content

3620. Maximum Number Of Distinct Elements After Operations

Difficulty: Medium

LeetCode Problem View on GitHub


3620. Maximum Number of Distinct Elements After Operations

Medium


You are given an integer array nums and an integer k.

You are allowed to perform the following operation on each element of the array at most once:

  • Add an integer in the range [-k, k] to the element.

Return the maximum possible number of distinct elements in nums after performing the operations.

 

Example 1:

Input: nums = [1,2,2,3,3,4], k = 2

Output: 6

Explanation:

nums changes to [-1, 0, 1, 2, 3, 4] after performing operations on the first four elements.

Example 2:

Input: nums = [4,4,4,4], k = 1

Output: 3

Explanation:

By adding -1 to nums[0] and 1 to nums[1], nums changes to [3, 5, 4, 4].

 

Constraints:

  • 1 <= nums.length <= 105
  • 1 <= nums[i] <= 109
  • 0 <= k <= 109

Solution

class Solution {
    public int maxDistinctElements(int[] nums, int k) {
        int n = nums.length;
        Arrays.sort(nums);
        TreeSet<Integer> set = new TreeSet<>();
        for (int ele : nums) {
            int mini = ele - k, maxi = ele + k;
            if (set.size() == 0 || !set.contains(mini)) set.add(mini);
            else {
                int last = set.getLast();
                if (last + 1 <= maxi) set.add(last + 1);
                else set.add(ele);
            }
        }
        return set.size();
    }
}

Complexity Analysis

  • Time Complexity: O(?)
  • Space Complexity: O(?)

Approach

Detailed explanation of the approach will be added here