题目:原题链接(困难)
标签:数组、数学、二分查找
| 解法 | 时间复杂度 | 空间复杂度 | 执行用时 |
|---|---|---|---|
| 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):计算数组中逆序对内容请搜索靠谱客的其他文章。
本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
发表评论 取消回复