Python语言,leetcode题库刷题记录 Median of Two Sorted Arrays

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Python语言,leetcode题库刷题记录 Median of Two Sorted Arrays相关的知识,希望对你有一定的参考价值。

There are two sorted arrays nums1 and nums2 of size m and n respectively.

Find the median of the two sorted arrays. The overall run time complexity should be O(log (m+n)).

Example 1:

nums1 = [1, 3]
nums2 = [2]

The median is 2.0

 

Example 2:

nums1 = [1, 2]
nums2 = [3, 4]

The median is (2 + 3)/2 = 2.5

class Solution(object):
    def findMedianSortedArrays(self, nums1, nums2):
        """
        :type nums1: List[int]
        :type nums2: List[int]
        :rtype: float
        """
        while 1:
            if len(nums1)+len(nums2) <= 2:
                if len(nums1) == 0:
                    res = float(nums2[0]+nums2[-1])/2
                elif len(nums2) == 0:
                    res = float(nums1[0]+nums1[-1])/2
                else:
                    res = float(nums1[0]+nums2[0])/2
                break;
            if len(nums1) == 0:
                if len(nums2) > 2:
                    del nums2[0]
                    del nums2[-1]
                elif len(nums2) > 1:
                    res = float(nums2[0]+nums2[-1])/2
                    break
                else:
                    res = nums2[0]
                    break;                
            elif len(nums2) == 0:
                if len(nums1) > 2:
                    del nums1[0]
                    del nums1[-1]
                elif len(nums1) > 1:
                    res = float(nums1[0]+nums1[-1])/2
                    break;
                else:
                    res = nums1[0]
                    break;
            else:
                if nums1[0] < nums2[0]:
                    del nums1[0]
                elif nums1[0] > nums2[0]:
                    del nums2[0]
                else:
                    if len(nums1) > len(nums2):
                        del nums1[0]
                    else:
                        del nums2[0]
    
                if len(nums1) == 0:
                    del nums2[-1]
                elif len(nums2) == 0:
                    del nums1[-1]
                else:
                    if nums1[-1] > nums2[-1]:
                        del nums1[-1]
                    elif nums1[-1] < nums2[-1]:
                        del nums2[-1]
                    else:
                        if len(nums1) > len(nums2):
                            del nums1[-1]
                        else:
                            del nums2[-1]
        return float(res)

思想是每次循环删除两个list中一个最小的和一个最大的,最后剩下的一个数或者两个数的均值就是要返回的值。

但是要判断的情况太多了,代码写的又臭又长,看了一下评论区也没有特别赏心悦目的,就这样吧。

感觉下一题没脸发出来了……



以上是关于Python语言,leetcode题库刷题记录 Median of Two Sorted Arrays的主要内容,如果未能解决你的问题,请参考以下文章

Leetcode刷题记录[python]——344 Reverse String

小黑课堂计算机二级Python有刷题程序吗

LeetCode 刷题记录

Leetcode刷题记录[python]——283 Move Zeroes

Leetcode刷题记录[python]——258 Add Digits

Leetcode刷题记录[python]——561 Array Partition I