Leetcode每日一题
题目链接: 1365. 有多少小于当前数字的数字
解题思路: 对列表进行排序,这里排序要带上它的下标,可以使用sorted函数进行排序O(nlogn)。在对排序好的列表线性处理,计算比它小的数字的数量。
题解:
class Solution:
def smallerNumbersThanCurrent(self, nums: List[int]) -> List[int]:
lennums = len(nums)
# 排序
position = sorted(enumerate(nums), key=lambda x:x[1])
result = [0] * lennums
min_val, cnt, sup = -1, 0, 0
for example in position:
if min_val < example[1]:
cnt += sup
result[example[0]] = cnt
min_val = example[1]
cnt += 1
sup = 0
elif min_val == example[1]:
result[example[0]] = cnt - 1
sup += 1
return result