【Leetcode每日一题】1365. 有多少小于当前数字的数字(排序预处理,线性求解)

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 

猜你喜欢

转载自blog.csdn.net/qq_37753409/article/details/109284759