Skip to content

Commit 4d21dca

Browse files
solves find target indices after sorting
1 parent 0a5201f commit 4d21dca

File tree

1 file changed

+27
-8
lines changed

1 file changed

+27
-8
lines changed
Lines changed: 27 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -1,16 +1,35 @@
1+
// https://leetcode.com/problems/find-target-indices-after-sorting-array
2+
// T: O(|nums|)
3+
// S: O(|nums|)
4+
15
import java.util.ArrayList;
2-
import java.util.Arrays;
6+
import java.util.HashMap;
37
import java.util.List;
8+
import java.util.Map;
49

510
public class FindTargetIndicesAfterSortingArray {
611
public List<Integer> targetIndices(int[] nums, int target) {
7-
Arrays.sort(nums);
8-
final List<Integer> indices = new ArrayList<>();
9-
for (int i = 0 ; i < nums.length ; i++) {
10-
if (nums[i] == target) {
11-
indices.add(i);
12-
}
12+
final Map<Integer, Integer> frequency = getFrequency(nums);
13+
int index = 0;
14+
for (int i = 0 ; i < target ; i++) {
15+
index += frequency.getOrDefault(i, 0);
16+
}
17+
return indices(index, frequency.getOrDefault(target, 0));
18+
}
19+
20+
private Map<Integer, Integer> getFrequency(int[] array) {
21+
final Map<Integer, Integer> result = new HashMap<>();
22+
for (int element : array) {
23+
result.put(element, result.getOrDefault(element, 0) + 1);
24+
}
25+
return result;
26+
}
27+
28+
private List<Integer> indices(int start, int length) {
29+
final List<Integer> result = new ArrayList<>(length);
30+
for (int i = 0 ; i < length ; i++) {
31+
result.add(start++);
1332
}
14-
return indices;
33+
return result;
1534
}
1635
}

0 commit comments

Comments
 (0)