概述
题目:原题链接(困难)
标签:数组、数学、二分查找
解法 | 时间复杂度 | 空间复杂度 | 执行用时 |
---|---|---|---|
Ans 1 (Python) | O ( N l o g N ) O(NlogN) O(NlogN) | O ( N ) O(N) O(N) | 2464ms (6.88%) |
Ans 2 (Python) | O ( N l o g N ) O(NlogN) O(NlogN) | O ( N ) O(N) O(N) | 1452ms (91.75%) |
Ans 3 (Python) |
解法一(二分查找):
class Solution:
def reversePairs(self, nums: List[int]) -> int:
ans = 0
prefix = []
for n in nums:
left, right = 0, len(prefix)
while left < right:
mid = (left + right) // 2
if n >= prefix[mid]:
left = mid + 1
else:
right = mid
ans += len(prefix) - left
prefix.insert(left, n)
return ans
解法二(解法一优化):
class Solution:
def reversePairs(self, nums: List[int]) -> int:
ans = 0
prefix = []
for n in nums:
left, right = 0, len(prefix)
while left < right:
mid = (left + right) // 2
if n >= prefix[mid]:
left = mid + 1
else:
right = mid
ans += len(prefix) - left
prefix[left:left] = [n]
return ans
最后
以上就是机智口红为你收集整理的LeetCode题解(Offer51):计算数组中逆序对的数量(Python)的全部内容,希望文章能够帮你解决LeetCode题解(Offer51):计算数组中逆序对的数量(Python)所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
发表评论 取消回复