Skip to content

Commit 05a620a

Browse files
solve #3005: Count Elements With Maximum Frequency in java
1 parent b7c9405 commit 05a620a

File tree

2 files changed

+37
-1
lines changed

2 files changed

+37
-1
lines changed

README.md

+1-1
Original file line numberDiff line numberDiff line change
@@ -881,7 +881,7 @@
881881
| 2980 | [Check if Bitwise OR Has Trailing Zeros](https://leetcode.com/problems/check-if-bitwise-or-has-trailing-zeros) | [![Java](assets/java.png)](src/CheckIfBitwiseORHasTrailingZeros.java) | |
882882
| 2996 | [Smallest Missing Integer Greater Than Sequential Prefix Sum](https://leetcode.com/problems/smallest-missing-integer-greater-than-sequential-prefix-sum) | [![Java](assets/java.png)](src/SmallestMissingIntegerGreaterThanSequentialPrefixSum.java) | |
883883
| 3000 | [Maximum Area of Longest Diagonal Rectangle](https://leetcode.com/problems/maximum-area-of-longest-diagonal-rectangle) | [![Java](assets/java.png)](src/MaximumAreaOfLongestDiagonalRectangle.java) | |
884-
| 3005 | [Count Elements With Maximum Frequency](https://leetcode.com/problems/count-elements-with-maximum-frequency) | | |
884+
| 3005 | [Count Elements With Maximum Frequency](https://leetcode.com/problems/count-elements-with-maximum-frequency) | [![Java](assets/java.png)](src/CountElementsWithMaximumFrequency.java) | |
885885
| 3010 | [Divide an Array Into Subarrays With Minimum Cost I](https://leetcode.com/problems/divide-an-array-into-subarrays-with-minimum-cost-i) | | |
886886
| 3014 | [Minimum Number of Pushes to Type Word I](https://leetcode.com/problems/minimum-number-of-pushes-to-type-word-i) | | |
887887
| 3019 | [Number of Changing Keys](https://leetcode.com/problems/number-of-changing-keys) | | |
+36
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,36 @@
1+
// https://leetcode.com/problems/count-elements-with-maximum-frequency
2+
// T: O(N)
3+
// S: O(N)
4+
5+
import java.util.HashMap;
6+
import java.util.Map;
7+
8+
public class CountElementsWithMaximumFrequency {
9+
public int maxFrequencyElements(int[] array) {
10+
final Map<Integer, Integer> frequencies = computeFrequencies(array);
11+
final int maxFrequency = getMaxFrequency(frequencies);
12+
return numberOfElementsWithFrequency(frequencies, maxFrequency);
13+
}
14+
15+
private static Map<Integer, Integer> computeFrequencies(int[] array) {
16+
final Map<Integer, Integer> map = new HashMap<>();
17+
for (int element : array) {
18+
map.put(element, map.getOrDefault(element, 0) + 1);
19+
}
20+
return map;
21+
}
22+
23+
private static int getMaxFrequency(final Map<Integer, Integer> frequencies) {
24+
return frequencies.values().stream().max(Integer::compareTo).get();
25+
}
26+
27+
private static int numberOfElementsWithFrequency(Map<Integer, Integer> frequencies, int frequency) {
28+
int sum = 0;
29+
for (Map.Entry<Integer,Integer> entry : frequencies.entrySet()) {
30+
if (entry.getValue() == frequency) {
31+
sum += frequency;
32+
}
33+
}
34+
return sum;
35+
}
36+
}

0 commit comments

Comments
 (0)