fork download
  1. import java.util.*;
  2.  
  3. class Main {
  4. public static void main(String[] args) {
  5. int[] nums = {1, 2, 1, 2, 3};
  6. int k = 2;
  7.  
  8. if (k <= 0) {
  9. System.out.println(0);
  10. return;
  11. }
  12.  
  13. int n = nums.length;
  14. long count = 0;
  15. int left = 0;
  16. Map<Integer, Integer> freqMap = new HashMap<>();
  17.  
  18. for (int right = 0; right < n; right++) {
  19. freqMap.put(nums[right], freqMap.getOrDefault(nums[right], 0) + 1);
  20.  
  21. while (freqMap.size() > k) {
  22. int leftElement = nums[left];
  23. freqMap.put(leftElement, freqMap.get(leftElement) - 1);
  24. if (freqMap.get(leftElement) == 0) {
  25. freqMap.remove(leftElement);
  26. }
  27. left++;
  28. }
  29.  
  30. count += (right - left + 1);
  31. }
  32.  
  33. System.out.println(count);
  34. }
  35. }
  36.  
Success #stdin #stdout 0.07s 54604KB
stdin
Standard input is empty
stdout
12