Leetcode每日必刷题库第4题,如何寻找两个正序数组的中位数?
【摘要】
题目:
给定两个大小为 m 和 n 的正序(从小到大)数组 nums1 和 nums2。
请你找出这两个正序数组的中位数,并且要求算法的时间复杂度为 O(log(m + n))。
你可以假设 nums1 和 nums2 不会同时为空。
示例:
示例 1:
...
题目:
给定两个大小为 m 和 n 的正序(从小到大)数组 nums1 和 nums2。
请你找出这两个正序数组的中位数,并且要求算法的时间复杂度为 O(log(m + n))。
你可以假设 nums1 和 nums2 不会同时为空。
示例:
示例 1:
nums1 = [1, 3]
nums2 = [2]
则中位数是 2.0
示例 2:
nums1 = [1, 2]
nums2 = [3, 4]
则中位数是 (2 + 3)/2 = 2.5
答案:
-
class Solution(object):
-
def findMedianSortedArrays(self, nums1, nums2):
-
a, b = sorted((nums1, nums2), key=len)
-
m, n = len(a), len(b)
-
after = (m + n - 1) / 2
-
lo, hi = 0, m
-
while lo < hi:
-
i = (lo + hi) / 2
-
if after-i-1 < 0 or a[i] >= b[after-i-1]:
-
hi = i
-
else:
-
lo = i + 1
-
i = lo
-
nextfew = sorted(a[i:i+2] + b[after-i:after-i+2])
-
return (nextfew[0] + nextfew[1 - (m+n)%2]) / 2.0
文章来源: wenyusuran.blog.csdn.net,作者:文宇肃然,版权归原作者所有,如需转载,请联系作者。
原文链接:wenyusuran.blog.csdn.net/article/details/107463151
【版权声明】本文为华为云社区用户转载文章,如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱:
cloudbbs@huaweicloud.com
- 点赞
- 收藏
- 关注作者
评论(0)