File tree Expand file tree Collapse file tree 1 file changed +27
-8
lines changed Expand file tree Collapse file tree 1 file changed +27
-8
lines changed Original file line number Diff line number Diff line change
1
+ // https://leetcode.com/problems/find-target-indices-after-sorting-array
2
+ // T: O(|nums|)
3
+ // S: O(|nums|)
4
+
1
5
import java .util .ArrayList ;
2
- import java .util .Arrays ;
6
+ import java .util .HashMap ;
3
7
import java .util .List ;
8
+ import java .util .Map ;
4
9
5
10
public class FindTargetIndicesAfterSortingArray {
6
11
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 ++);
13
32
}
14
- return indices ;
33
+ return result ;
15
34
}
16
35
}
You can’t perform that action at this time.
0 commit comments