315. 计算右侧小于当前元素的个数

给定一个整数数组 nums,按要求返回一个新数组 counts。数组 counts 有该性质: counts[i] 的值是  nums[i] 右侧小于 nums[i] 的元素的数量。

示例:
输入: [5,2,6,1]
输出: [2,1,1,0]
解释:
5 的右侧有 2 个更小的元素 (2 和 1).
2 的右侧仅有 1 个更小的元素 (1).
6 的右侧有 1 个更小的元素 (1).
1 的右侧有 0 个更小的元素.

题解

暴力查找 效率极低

/**
 * @param {number[]} nums
 * @return {number[]}
 */
var countSmaller = function(nums) {
    let i = 0, num = new Array(nums.length)
    while (i < nums.length-1) {
        let j=i+1,k = nums.length - 1,s=0
        while (j<=k){
            if(nums[j]<nums[i]){
                s++
            }
            if(nums[k]<nums[i]&&j<k){
                s++
            }
            j++
            k--
        }
        num[i]=s
        i++
    }
    num[num.length-1]=0
    return num
};

发表评论

您的电子邮箱地址不会被公开。 必填项已用*标注