From 2bb3f18bef5a9c3eea2b9bcaeecc53508b34fe68 Mon Sep 17 00:00:00 2001 From: Vedeesh Dwivedi Date: Tue, 21 Oct 2025 12:22:09 +0530 Subject: [PATCH 1/2] Implement maxFrequency method for frequency calculation --- .../LC_maxfreqeleafterop1.java | 63 +++++++++++++++++++ 1 file changed, 63 insertions(+) create mode 100644 src/test/java/LeetCode/Maximum_Frequency_of_an_Element_After_Performing_Operations_I/LC_maxfreqeleafterop1.java diff --git a/src/test/java/LeetCode/Maximum_Frequency_of_an_Element_After_Performing_Operations_I/LC_maxfreqeleafterop1.java b/src/test/java/LeetCode/Maximum_Frequency_of_an_Element_After_Performing_Operations_I/LC_maxfreqeleafterop1.java new file mode 100644 index 00000000..96930836 --- /dev/null +++ b/src/test/java/LeetCode/Maximum_Frequency_of_an_Element_After_Performing_Operations_I/LC_maxfreqeleafterop1.java @@ -0,0 +1,63 @@ +class LC_maxfreqeleafterop1 { + + public int maxFrequency(int[] nums, int k, int numOperations) { + Arrays.sort(nums); + + int ans = 0; + Map numCount = new HashMap<>(); + + int lastNumIndex = 0; + for (int i = 0; i < nums.length; ++i) { + if (nums[i] != nums[lastNumIndex]) { + numCount.put(nums[lastNumIndex], i - lastNumIndex); + ans = Math.max(ans, i - lastNumIndex); + lastNumIndex = i; + } + } + + numCount.put(nums[lastNumIndex], nums.length - lastNumIndex); + ans = Math.max(ans, nums.length - lastNumIndex); + + for (int i = nums[0]; i <= nums[nums.length - 1]; i++) { + int l = leftBound(nums, i - k); + int r = rightBound(nums, i + k); + int tempAns; + if (numCount.containsKey(i)) { + tempAns = Math.min(r - l + 1, numCount.get(i) + numOperations); + } else { + tempAns = Math.min(r - l + 1, numOperations); + } + ans = Math.max(ans, tempAns); + } + + return ans; + } + + private int leftBound(int[] nums, int value) { + int left = 0; + int right = nums.length - 1; + while (left < right) { + int mid = (left + right) / 2; + if (nums[mid] < value) { + left = mid + 1; + } else { + right = mid; + } + } + return left; + } + + private int rightBound(int[] nums, int value) { + int left = 0; + int right = nums.length - 1; + while (left < right) { + int mid = (left + right + 1) / 2; + if (nums[mid] > value) { + right = mid - 1; + } else { + left = mid; + } + } + return left; + } +} From d45a827e2fb20e0225ab918012e4dc3a7d90a8d8 Mon Sep 17 00:00:00 2001 From: Vedeesh Dwivedi Date: Tue, 21 Oct 2025 12:23:44 +0530 Subject: [PATCH 2/2] Add import statement for utility classes --- .../LC_maxfreqeleafterop1.java | 1 + 1 file changed, 1 insertion(+) diff --git a/src/test/java/LeetCode/Maximum_Frequency_of_an_Element_After_Performing_Operations_I/LC_maxfreqeleafterop1.java b/src/test/java/LeetCode/Maximum_Frequency_of_an_Element_After_Performing_Operations_I/LC_maxfreqeleafterop1.java index 96930836..59cd97c7 100644 --- a/src/test/java/LeetCode/Maximum_Frequency_of_an_Element_After_Performing_Operations_I/LC_maxfreqeleafterop1.java +++ b/src/test/java/LeetCode/Maximum_Frequency_of_an_Element_After_Performing_Operations_I/LC_maxfreqeleafterop1.java @@ -1,3 +1,4 @@ +import java.util.*; class LC_maxfreqeleafterop1 { public int maxFrequency(int[] nums, int k, int numOperations) {