用python编写代码以完成下面要求。给定两个大小为m和n的正序(从小到大)列表numsl和nums2。请你找出并返回这两个列表的中位数。中位数是按顺序排列的一组数据中居于中间位置的数,如果观察值有偶数个,通常取最中间的两个数值的平均数作为中位数。
时间: 2024-05-13 17:15:31 浏览: 76
可以使用归并排序的思想,将两个有序列表合并成一个有序列表,然后找到中位数。
以下是代码实现:
```python
def findMedianSortedArrays(nums1, nums2):
"""
:type nums1: List[int]
:type nums2: List[int]
:rtype: float
"""
# 合并两个有序列表
nums = []
i, j = 0, 0
while i < len(nums1) and j < len(nums2):
if nums1[i] < nums2[j]:
nums.append(nums1[i])
i += 1
else:
nums.append(nums2[j])
j += 1
nums += nums1[i:]
nums += nums2[j:]
# 计算中位数
mid = len(nums) // 2
if len(nums) % 2 == 0:
return (nums[mid-1] + nums[mid]) / 2.0
else:
return nums[mid]
```
测试代码:
```python
nums1 = [1, 3]
nums2 = [2]
print(findMedianSortedArrays(nums1, nums2)) # 输出 2.0
nums1 = [1, 2]
nums2 = [3, 4]
print(findMedianSortedArrays(nums1, nums2)) # 输出 2.5
```
阅读全文