leetcode 【待改进】寻找两个有序数组中位数

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/qxqxqzzz/article/details/84455399

耗时时间太长,需要改进

思路:将两个数组合并,运用快速排序进行排序,成为一个有序数组,然后根据数组元素个数是奇数还是偶数,确定其中位数

中位数的概念:

1,如果数组元素个数为奇数, 则中位数为中间那个元素

2,如果数组元素个数为偶数,则中位数为中间两个元素的算数平均数

注意:返回值类型不一定非要为浮点型,比如数组元素个数为奇数时,返回的是中间那个元素,可以不是浮点数,是整数。

class Solution:
    def findMedianSortedArrays(self, nums1, nums2):
        def quicksort(arr):
            if len(arr) < 2:
                return arr
            else:
                pivot = arr[0]
                less = [i for i in arr[1:] if i <= pivot]
                greater = [ i for i in arr[1:] if i > pivot]
            return quicksort(less) + [pivot] + quicksort(greater)
        mid = 0
        arr = nums1 + nums2
        arr = quicksort(arr)
        print(arr)
        if len(arr) < 2:
            mid = arr[0]
            print(mid)
            return mid
        if len(arr) % 2 == 1:
            mid = arr[(len(arr) // 2)]
        else:
            mid = (arr[(len(arr)//2-1)]+arr[len(arr)//2]) / 2
        print(mid)
        return mid

猜你喜欢

转载自blog.csdn.net/qxqxqzzz/article/details/84455399