原题: 给你一个数组 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; } }