LEETCODE | PYTHON | 4 | 寻找两个正序数组的中位数
1. 题目
给定两个大小分别为 m 和 n 的正序(从小到大)数组 nums1 和 nums2。请你找出并返回这两个正序数组的 中位数 。
算法的时间复杂度应该为 O(log (m+n)) 。
来源:力扣(LeetCode)
链接:https://leetcode.cn/problems/median-of-two-sorted-arrays
著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。
2. 代码
class Solution:
def findMedianSortedArrays(self, nums1: List[int], nums2: List[int]) -> float:
#数组合并结果
res = []
#设定双指针指向两个数组的遍历位置
index1 = 0
index2 = 0
#计算两个数组长度
len1 = len(nums1)
len2 = len(nums2)
#判断特殊情况
if len1 == 0 and len2 == 0:
return 0
#遍历两个数组
while index1 < len1 and index2 < len2:
#nums1的当前值小于nums2的当前值时
if nums1[index1] < nums2[index2]:
res.append(nums1[index1])
index1 = index1 + 1
#nums1的当前值大于等于nums2的当前值时
else:
res.append(nums2[index2])
index2 = index2 + 1
#判断nums1是否剩余
while index1 < len1:
res.append(nums1[index1])
index1 = index1 + 1
#判断nums2是否剩余
while index2 < len2:
res.append(nums2[index2])
index2 = index2 + 1
if (len1 + len2) %2:
return res[(len1+len2)//2]
else:
return (res[(len1+len2)//2]+res[(len1+len2)//2-1])/2