1365. 有多少小于当前数字的数字
给你一个数组 nums,对于其中每个元素 nums[i],请你统计数组中比它小的所有数字的数目。
换而言之,对于每个 nums[i] 你必须计算出有效的 j 的数量,其中 j 满足 j != i 且 nums[j] < nums[i] 。
以数组形式返回答案
限制:2 <= nums.length <= 500;0 <= nums[i] <= 100
class Solution(object):
def smallerNumbersThanCurrent(self, nums):
"""
:type nums: List[int]
:rtype: List[int]
"""
result = []
nums_less = []
n = 0
nums_tem = [0] * 101
for i in nums:
nums_tem[i] += 1
for j in nums_tem:
nums_less.append(n)
n += nums_tem[j]
for k in nums:
result.append(nums_less[k])
return(result)
所用的方法为计数排序,也是第一次听说这个东西,总体的计算方法如下:
- 首先初始化一个长度为101的数组nums_tem,各个位置都是0(用来临时存放nums中的元素的出现次数,可能这就是计数排序中的计数的意思吧)
- 然后遍历nums,出现哪个数就在nums_tem对应位置+1(计数),这样就得到我们需要的临时计数数组(临时数组nums_tem的下标对应着nums中的元素,下标上的数字对应下标在nums中出现的次数)
- 之后,我们初始化另外一个空数组nums_less (用来存放nums中小于某个数的次数)
- 最后遍历nums,输出对应结果