2831. Find the Longest Equal Subarray

Difficulty:
Related Topics:
    Similar Questions:

      Problem

      You are given a 0-indexed integer array nums and an integer k.

      A subarray is called equal if all of its elements are equal. Note that the empty subarray is an equal subarray.

      Return **the length of the *longest* possible equal subarray after deleting **at most** *k* elements from **nums.

      A subarray is a contiguous, possibly empty sequence of elements within an array.

      Example 1:

      Input: nums = [1,3,2,3,1,3], k = 3
      Output: 3
      Explanation: It's optimal to delete the elements at index 2 and index 4.
      After deleting them, nums becomes equal to [1, 3, 3, 3].
      The longest equal subarray starts at i = 1 and ends at j = 3 with length equal to 3.
      It can be proven that no longer equal subarrays can be created.
      

      Example 2:

      Input: nums = [1,1,2,2,1,1], k = 2
      Output: 4
      Explanation: It's optimal to delete the elements at index 2 and index 3.
      After deleting them, nums becomes equal to [1, 1, 1, 1].
      The array itself is an equal subarray, so the answer is 4.
      It can be proven that no longer equal subarrays can be created.
      

      Constraints:

      Solution (Java)

      class Solution {
          public int longestEqualSubarray(List<Integer> A, int k) {
              int maxf = 0, i = 0, n = A.size();
              Map<Integer, Integer> count = new HashMap<>();
              for (int j = 0; j < n; j++) {
                  count.put(A.get(j), count.getOrDefault(A.get(j), 0) + 1);
                  maxf = Math.max(maxf, count.get(A.get(j)));
                  if (j - i + 1 - maxf > k) {
                      count.put(A.get(i), count.get(A.get(i)) - 1);
                      i++;
                  }
              }
              return maxf;
          }
      }
      

      Explain:

      nope.

      Complexity: