LSGO——LeetCode實戰(數組系列):4題尋找兩個有序數組的中位數

給定兩個大小爲 m 和 n 的有序數組 nums1 和 nums2。

請你找出這兩個有序數組的中位數,並且要求算法的時間複雜度爲 O(log(m + n))。

你可以假設 nums1 和 nums2 不會同時爲空。

解法一:

暴力法,先合併爲一個有序數組。

class Solution(object):
    def findMedianSortedArrays(self, nums1, nums2):
        """
        :type nums1: List[int]
        :type nums2: List[int]
        :rtype: float
        """
        nums =[]
        m = len(nums1)
        n = len(nums2)
        if m == 0:
            if n % 2 == 0:
                return (nums2[n / 2 - 1] + nums2[n / 2]) / 2.0
            else: 
                return nums2[n / 2]
        if n == 0:
            if m % 2 == 0: 
                return (nums1[m / 2 - 1] + nums1[m / 2]) / 2.0

            else: 
                return nums1[m / 2]
        count = 0
        i = 0 
        j = 0
        while count != (m + n) :
            if i == m :
                while j != n:
                    nums.append(nums2[j])
                    j+=1
                break
            if j == n:
                while i != m:
                    nums.append(nums1[i])
                    i +=1
                break
            if nums1[i] < nums2[j]:
                nums.append(nums1[i])
                i +=1
            else:
                nums.append(nums2[j])
                j +=1
        count = m+n
        if count % 2 == 0:
            return (nums[count / 2 - 1] + nums[count / 2]) / 2.0
        else:
            return nums[count / 2]

 

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章