Count of Smaller Numbers After Self LeetCode solution in Java

1
class Solution {
2
public List<Integer> countSmaller(int[] nums) {
3
int min = 20001;
4
int max = -1;
5
for (int num : nums) {
6
min = Math.min(min, num);
7
max = Math.max(max, num);
8
}
9

10
min--;
11
int[] count = new int[max - min + 1];
12
Integer[] result = new Integer[nums.length];
13
for (int i = nums.length - 1; i >= 0; i--) {
14
int k = nums[i] - min - 1;
15
int c = 0;
16
do {
17
c += count[k];
18
k -= (-k & k);
19
} while (k > 0);
20
result[i] = c;
21

22
k = nums[i] - min;
23
while (k < count.length) {
24
count[k]++;
25
k += (-k & k);
26
}
27
}
28

29
return Arrays.asList(result);
30
}
31
}

0

WPM •0 •0

100%

ACC •0 •0

0s

TIME •0