原題: 給你一個數組 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; } }