LeetCode周赛第178周——有多少小于当前数字的数字

原题: 给你一个数组 nums,对于其中每一个元素 nums[i],请你统计数组中比它小的全部数字的数目。换而言之,对于每一个 nums[i] 你必须计算出有效的 j 的数量,其中 j 知足 j != i 且 nums[j] < nums[i] 。以数组形式返回答案。数组

输入: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)。
来源:力扣(LeetCode) 连接:https://leetcode-cn.com/problems/how-many-numbers-are-smaller-than-the-current-number

说明: 因为要求返回的数组的排序与原数组一一对应,我的认为用暴力解法是比较好的选择。固然也不只有一种方法,不过还需使用额外的空间存储原数组的顺序。code

直接for循环,每次取其中一位,与数组中的其余数进行对比,并记录。blog

class Solution {

    /**
     * @param Integer[] $nums
     * @return Integer[]
     */
    function smallerNumbersThanCurrent($nums) {
	//定义一个count数组用来存放结果数组
        $count = [];
	//边界条件判断,当数组长度为1或0时,返回零
        while(count($nums)<2){
            return 0;
        }
        for($i=0;$i<count($nums);$i++){
            $count[$i] = 0;
            for($j = 0;$j <count($nums);$j++){
                if($nums[$i]>$nums[$j]&& $j!=$i){
                    $count[$i]++; 
                }
            }
        }
        return $count;
    }
}

相关文章
相关标签/搜索