#
#
# 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可
#
# find median in two sorted array
# @param arr1 int整型一维数组 the array1
# @param arr2 int整型一维数组 the array2
# @return int整型
#
class Solution:
    def findMedianinTwoSortedAray(self , arr1: List[int], arr2: List[int]) -> int:
        # write code here
        
        
        n = len(arr1) - 1
        m = len(arr2) - 1
        
        if n == -1:
            return arr1[m//2]
        if m == -1:
            return arr2[n//2]
        
        if n == 0 and m == 0:
            return min(arr1[0], arr2[0])
        
        half = (n+m + 2) // 2
        
        mid1 = n // 2
        mid2 = half - (mid1+1) -1
        
        if arr1[mid1] == arr2[mid2]:
            return arr1[mid1]
        
        elif arr1[mid1] < arr2[mid2]:
            return self.findMedianinTwoSortedAray(arr1[mid1+1:], arr2[:mid2+1])
        else:
            return self.findMedianinTwoSortedAray(arr1[:mid1+1], arr2[mid2+1:])