class Solution(object):
    def findMedianSortedArrays(self, nums1, nums2):
        """
        :type nums1: List[int]
        :type nums2: List[int]
        :rtype: float
        """
        def findksmall(k,nums1,start1,nums2,start2):
            if len(nums1[start1:])<len(nums2[start2:]):
                return findksmall(k,nums2,start2,nums1,start1)
            if len(nums2[start2:])==0:
                return nums1[start1+k-1]
            if k==1:
                return min(nums1[start1],nums2[start2])
            range2=min(k//2,len(nums2))
            range1=k-range2
            pivot1=nums1[start1+range1-1]
            pivot2=nums2[start2+range2-1]
            if pivot1==pivot2:
                return pivot1
            elif pivot1<pivot2:
                return findksmall(k-range1,nums1,start1+range1,nums2,start2)
            else:
                return findksmall(k-range2,nums1,start1,nums2,start2+range2)
        m=len(nums1)
        n=len(nums2)
        k=(m+n)//2+1#这里的k表示第几个，[1,2][3,4] 4 第2个 第三个
        if (m+n)%2==0:
            mid1=findksmall(k,nums1,0,nums2,0)
            mid2=findksmall(k-1,nums1,0,nums2,0)
            return 1.0* (mid1+mid2)/2
        else:
            return findksmall(k,nums1,0,nums2,0)
nums1=[1,2]
nums2=[3,4]
s=Solution()
print(s.findMedianSortedArrays(nums1,nums2))