本文主要是介绍Leetcode 1365. How Many Numbers Are Smaller Than the Current Number [Python],希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
本质上是考查一个数字在已经排好序的序列中,排到第几位。原来的序列没有排序,所以需要sort一下。
class Solution:def smallerNumbersThanCurrent(self, nums: List[int]) -> List[int]:res = []newnums = nums[::]newnums.sort()for idex, num in enumerate(nums):ans = bisect.bisect_left(newnums, num)res.append(ans)return res
一般来说貌似sort可以直接用。不过面试fb家的面试时,被问到了一个问题,本质是要求写一个QS的函数出来。还是记一个模版吧。万一被问到啥的。。。
def QS(q, l, r):if l >= r: return mid = q[l+(r-l)//2]i = l - 1j = r + 1while i < j:while True:i += 1if q[i] >= mid:breakwhile True:j -= 1if q[j] <= mid:breakif i < j:q[i],q[j] = q[j],q[i]QS(q, l, j)QS(q, j+1,r)l = 0
r = len(q) - 1
这篇关于Leetcode 1365. How Many Numbers Are Smaller Than the Current Number [Python]的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!