leetcode中寻找两个正序数组的中位数python
时间: 2023-10-23 07:22:18 浏览: 218
好的,下面是寻找两个正序数组的中位数的 Python 代码:
```python
def findMedianSortedArrays(nums1, nums2):
nums = sorted(nums1 + nums2)
n = len(nums)
if n % 2 == 0:
return (nums[n // 2 - 1] + nums[n // 2]) / 2
else:
return nums[n // 2]
```
其中,nums1和nums2分别是两个正序数组,函数返回它们的中位数。我们将两个数组合并并排序,然后判断数组长度的奇偶性,分别返回中位数。如果数组长度是偶数,我们取中间两个数的平均值作为中位数;如果数组长度是奇数,我们直接返回中间的那个数。
相关问题
给定两个大小分别为 m 和 n 的正序(从小到大)数组 nums1 和 nums2。请你找出并返回这两个正序数组的 中位数 。 算法的时间复杂度应该为 O(log (m+n)) 。 来源:力扣(LeetCode) 链接:https://leetcode.cn/problems/median-of-two-sorted-arrays 著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。
这是一个经典的问题,可以使用二分查找算法来解决。具体步骤如下:
1. 将两个数组合并成一个数组,并将其排序。
2. 如果数组的长度是奇数,则中位数就是数组的中间元素。
3. 如果数组的长度是偶数,则中位数就是数组的中间两个元素的平均值。
代码实现如下:
```python
def findMedianSortedArrays(nums1, nums2):
# 合并两个数组
nums = nums1 + nums2
# 排序
nums.sort()
n = len(nums)
# 判断数组长度是奇数还是偶数
if n % 2 == 1:
# 奇数
return nums[n // 2]
else:
# 偶数
return (nums[n // 2 - 1] + nums[n // 2]) / 2
```
时间复杂度为 O((m+n)log(m+n)),因为需要进行排序。如果想要达到 O(log(m+n)) 的时间复杂度,可以使用二分查找算法。
阅读全文