首页 > 试题广场 >

两个升序数组的中位数

[编程题]两个升序数组的中位数
  • 热度指数:1836 时间限制:C/C++ 1秒,其他语言2秒 空间限制:C/C++ 256M,其他语言512M
  • 算法知识视频讲解
给定两个长度为 n 和 m 的升序数组(后一个数一定大于等于前一个数),请你找到这两个数组中全部元素的中位数。

数据范围: ,数组中的元素满足
示例1

输入

[1,2,3,4,5],[6,7,8,9]

输出

5
示例2

输入

[1,2,3,8,9],[4,5,6,7]

输出

5
示例3

输入

[1,3,4],[1,4,4]

输出

3.5
class Solution:
    def Median(self, nums1: List[int], nums2: List[int]) -> float:
        n = len(nums1) + len(nums2)
        median = 0
        index1, index2 = 0, 0
        if n % 2 == 0:
            for _ in range(0, int(n / 2)):
                if index1 >= len(nums1):
                    median = nums2[index2]
                    index2 += 1
                elif index2 >= len(nums2):
                    median = nums1[index1]
                    index1 += 1
                elif  nums1[index1] > nums2[index2]:
                    median = nums2[index2]
                    index2 += 1
                else:
                    median = nums1[index1]
                    index1 += 1
            if index1 >= len(nums1):
                median = (median + nums2[index2]) / 2
            elif index2 >= len(nums2):
                median = (median + nums1[index1]) / 2
            elif nums1[index1] > nums2[index2]:
                median = (median + nums2[index2]) / 2
            else:
                median = (median + nums1[index1]) / 2
        else:
            for _ in range(0, int((n + 1) / 2)):
                if index1 >= len(nums1):
                    median = nums2[index2]
                    index2 += 1
                elif index2 >= len(nums2):
                    median = nums1[index1]
                    index1 += 1
                elif nums1[index1] > nums2[index2]:
                    median = nums2[index2]
                    index2 += 1
                else:
                    median = nums1[index1]
                    index1 += 1
        return median

发表于 2024-06-04 18:08:20 回复(0)