給你一個數組 nums,對於其中每個元素 nums[i],請你統計數組中比它小的所有數字的數目。
換而言之,對於每個 nums[i] 你必須計算出有效的 j 的數量,其中 j 滿足 j != i 且 nums[j] < nums[i] 。
以數組形式返回答案。
示例 1:
輸入:nums = [8,1,2,2,3]
輸出:[4,0,1,1,3]
解釋:
對於 nums[0]=8 存在四個比它小的數字:(1,2,2 和 3)。
對於 nums[1]=1 不存在比它小的數字。
對於 nums[2]=2 存在一個比它小的數字:(1)。
對於 nums[3]=2 存在一個比它小的數字:(1)。
對於 nums[4]=3 存在三個比它小的數字:(1,2 和 2)。
示例 2:
輸入:nums = [6,5,4,8]
輸出:[2,1,0,3]
示例 3:
輸入:nums = [7,7,7,7]
輸出:[0,0,0,0]
提示:
2 <= nums.length <= 500
0 <= nums[i] <= 100
來源:力扣(LeetCode)
鏈接:https://leetcode-cn.com/problems/how-many-numbers-are-smaller-than-the-current-number
思路:hashtable
class Solution {
public int[] smallerNumbersThanCurrent(int[] nums) {
int[] counter=new int[102];
for(int i:nums){
counter[i]++;
}
int sum=0;
for(int i=0;i<counter.length;i++){
int a=counter[i];
counter[i]=sum;
sum+=a;
}
int[]res=new int[nums.length];
for(int i=0;i<nums.length;i++){
res[i]=counter[nums[i]];
}
return res;
}
}