Skip to content

Commit f21c136

Browse files
solves #2670: Find the Distinct Difference Array in java
1 parent 9c87bd1 commit f21c136

File tree

2 files changed

+43
-1
lines changed

2 files changed

+43
-1
lines changed

README.md

+1-1
Original file line numberDiff line numberDiff line change
@@ -820,5 +820,5 @@
820820
| 2652 | [Sum Multiples](https://leetcode.com/problems/sum-multiples) | [![Java](assets/java.png)](src/SumMultiples.java) | |
821821
| 2656 | [Maximum Sum With Exactly K Elements](https://leetcode.com/problems/maximum-sum-with-exactly-k-elements) | [![Java](assets/java.png)](src/MaximumSumWithExactlyKElements.java) | |
822822
| 2660 | [Determine the Winner of a Bowling Game](https://leetcode.com/problems/determine-the-winner-of-a-bowling-game) | [![Java](assets/java.png)](src/DetermineTheWinnerOfABowlingGame.java) | |
823-
| 2670 | [Find the Distinct Difference Array](https://leetcode.com/problems/find-the-distinct-difference-array) | | |
823+
| 2670 | [Find the Distinct Difference Array](https://leetcode.com/problems/find-the-distinct-difference-array) | [![Java](assets/java.png)](src/FindTheDistinctDifferenceArray.java) | |
824824
| 2678 | [Number of Senior Citizens](https://leetcode.com/problems/number-of-senior-citizens) | | |
+42
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,42 @@
1+
// https://leetcode.com/problems/find-the-distinct-difference-array
2+
// N: length of array
3+
// T: O(N)
4+
// S: O(N)
5+
6+
import java.util.HashMap;
7+
import java.util.Map;
8+
9+
public class FindTheDistinctDifferenceArray {
10+
public int[] distinctDifferenceArray(int[] nums) {
11+
final Map<Integer, Integer> leftFrequencies = new HashMap<>();
12+
final Map<Integer, Integer> rightFrequencies = getNumberFrequencies(nums);
13+
final int[] result = new int[nums.length];
14+
int k = 0;
15+
for (int element : nums) {
16+
addToFrequency(leftFrequencies, element);
17+
removeFromFrequency(rightFrequencies, element);
18+
result[k++] = leftFrequencies.size() - rightFrequencies.size();
19+
}
20+
return result;
21+
}
22+
23+
private void removeFromFrequency(Map<Integer, Integer> frequencies, int element) {
24+
if (frequencies.get(element) == 1) {
25+
frequencies.remove(element);
26+
} else {
27+
frequencies.put(element, frequencies.getOrDefault(element, 0) - 1);
28+
}
29+
}
30+
31+
private void addToFrequency(Map<Integer, Integer> frequencies, int element) {
32+
frequencies.put(element, frequencies.getOrDefault(element, 0) + 1);
33+
}
34+
35+
private Map<Integer, Integer> getNumberFrequencies(int[] array) {
36+
final Map<Integer, Integer> result = new HashMap<>();
37+
for (int element : array) {
38+
result.put(element, result.getOrDefault(element, 0) + 1);
39+
}
40+
return result;
41+
}
42+
}

0 commit comments

Comments
 (0)