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;
    }
}

相關文章
相關標籤/搜索