1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26
|
class (object): def find_median_sorted_arrays(self, nums1, nums2): """ :type nums1: List[int] :type nums2: List[int] :rtype: float """ len_1, len_2 = len(nums1), len(nums2) if (len_1 + len_2) % 2 == 1: return self.get_kth(nums1, nums2, (len_1 + len_2) // 2 + 1) else: return (self.get_kth(nums1, nums2, (len_1 + len_2) // 2) + self.get_kth(nums1, nums2, (len_1 + len_2) // 2 + 1)) * 0.5
def get_kth(self, nums1, nums2, k): length_1, length_2 = len(nums1), len(nums2) if length_1 > length_2: return self.get_kth(nums2, nums1, k) if length_1 == 0: return nums2[k - 1] if k == 1: return min(nums1[0], nums2[0])
pa = min(k // 2, length_1) pb = k - pa return self.get_kth(nums1[pa:], nums2, k - pa) if nums1[pa - 1] <= nums2[pb - 1] else self.get_kth(nums1, nums2[pb:], k - pb)
|
近期评论