Menu
CoddyTech

Median of Two Sorted Arrays

Bạn nhận được hai danh sách số nguyên, nums1 và nums2, mỗi danh sách được sắp xếp từ nhỏ đến lớn và có ít nhất một giá trị. Hãy trả về trung vị của tất cả giá trị trong hai danh sách, dưới dạng văn bản.

Nếu tổng số phần tử là số lẻ, trung vị là giá trị ở giữa, chẳng hạn như "4". Nếu tổng số phần tử là số chẵn, trung vị là trung bình của hai giá trị ở giữa, chẳng hạn như "2.5" hoặc "-0.5". Viết số nguyên không có dấu thập phân và viết số không là "0", không bao giờ viết "-0". Hướng đến độ phức tạp thời gian O(log(min(m, n))).

Hàm

findMedianSortedArrays(nums1: integer-array, nums2: integer-array) → string
nums1integer-array
danh sách đầu tiên, được sắp xếp từ nhỏ nhất đến lớn nhất
nums2integer-array
danh sách thứ hai, được sắp xếp từ nhỏ nhất đến lớn nhất
Trả vềstring
trung vị của tất cả các giá trị, dưới dạng văn bản như "4" hoặc "-2.5"

Ràng buộc

  • 1 ≤ nums1.length, nums2.length ≤ 3000
  • -106 ≤ nums1[i], nums2[i] ≤ 106
  • Cả hai danh sách đều được sắp xếp theo thứ tự không giảm, và các giá trị có thể lặp lại.

Ví dụ

Đầu vào
nums1 = [1, 4]nums2 = [2, 7, 9]
Đầu ra
"4"
Giải thích
Kết hợp lại, các giá trị là 1, 2, 4, 7, 9. Có năm giá trị nên có một giá trị ở giữa, là giá trị thứ ba, bằng 4.
challenge icon

Câu hỏi mở rộng

Bạn có thể dùng cách chia tương tự để tìm giá trị nhỏ thứ k trong hai danh sách, với mọi k, trong thời gian logarit không?

Đặt lại code
def findMedianSortedArrays(nums1, nums2):
    # Viết code ở đây

Kiểm thử #1

Kiểm thử #2

Kiểm thử #3

Đối số

nums1 = [1, 4]
nums2 = [2, 7, 9]

Đầu ra mong đợi

"4"