思路分析
数据范围比较小,可以用桶的思想,统计出各个数出现的频率。然后用迭代的方法,用dict[i]表示i出现的次数,sum[i]表示比i小的数的个数,则
代码实现
class Solution {
public int[] smallerNumbersThanCurrent(int[] nums) {
// 数据范围0-100
// dict[i]表示i出现的次数
int[] dict = new int[101];
// sum[i]表示比i小的数的个数
int[] sum = new int[101];
int[] ans = new int[nums.length];
int i;
for (i = 0; i < nums.length; ++i) {
dict[nums[i]]++;
}
for (i = 1; i <= 100; ++i) {
sum[i] = sum[i - 1] + dict[i - 1];
}
for (i = 0; i < nums.length; ++i) {
ans[i] = sum[nums[i]];
}
return ans;
}
}