2020.10.27-简单:有多少小于当前数字的数字

题目链接:

https://leetcode-cn.com/problems/how-many-numbers-are-smaller-than-the-current-number/
package leetcode;

public class Smaller_01 {
     public static int[] SmallerByFreq(int[] nums) {//快速排序
        int[] freq=new int[101];
        //创建以数字为键,以数字出现的次数为值的数组(题目给出数组长度0-100所以数组长度为101)
        for (int num:nums) {
            freq[num]++;
        }
        //// freq记录包含自身在内的和比自己小的数的总和
        for (int i = 1; i < freq.length-1; i++) {
            freq[i]+=freq[i-1];
        }
        //如果nums[i]=0会让freq数组越界需要判断
        //现在freq记录的是包含自身在内的和比自己小的数的总和
        //所以freq[nums[i]-1]记录的是比自己小的数的总和
        for (int i =0; i < nums.length; i++) {  
            if(nums[i]==0) {
                nums[i]=0;
            }else {
                nums[i]=freq[nums[i]-1];
            }
        }  
        return nums;
    }
    public static void main(String[] args) {
        int[] nums=new int[] {8,1,2,2,3};
        Smaller_01 smaller_01=new Smaller_01();
        smaller_01.SmallerByFreq(nums);
    }
}

你可能感兴趣的:(2020.10.27-简单:有多少小于当前数字的数字)