码迷,mamicode.com
首页 > 编程语言 > 详细

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

时间:2017-03-12 22:58:19      阅读:409      评论:0      收藏:0      [点我收藏+]

标签:example   amp   leetcode   com   return   思想   lis   turn   res   

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

标签:example   amp   leetcode   com   return   思想   lis   turn   res   

原文地址:http://www.cnblogs.com/kuqs/p/6539530.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!