Files
leetcode/problems/0004-median-of-two-sorted-arrays/solution.py
T

25 lines
922 B
Python

class Solution:
def findMedianSortedArrays(self, nums1: list[int], nums2: list[int]) -> float:
if len(nums1) <= len(nums2):
A, B = nums1, nums2
else:
A, B = nums2, nums1
half_total = (len(A) + len(B)) // 2
lo, hi = 0, len(A)
while True:
i = (lo + hi) // 2
j = half_total - i
Aleft = A[i - 1] if i > 0 else float("-inf")
Aright = A[i] if i < len(A) else float("inf")
Bleft = B[j - 1] if j > 0 else float("-inf")
Bright = B[j] if j < len(B) else float("inf")
if Aleft > Bright:
hi = i - 1
elif Bleft > Aright:
lo = i + 1
else:
if (len(A) + len(B)) % 2 != 0:
return min(Aright, Bright)
else:
return (max(Aleft, Bleft) + min(Aright, Bright)) / 2