Khó 0 đã giải Tỷ lệ chấp nhận 0%

Median of Two Sorted Arrays

Find the median of two sorted lists combined.

Bạn sẽ học được gì

  • Chia hai mảng đã sắp xếp bằng tìm kiếm nhị phân
  • Tìm trung vị trong O(log n)
  • Xử lý tổng độ dài chẵn và lẻ

Đề bài

Both lists are sorted in ascending order. Find the median of all their numbers together; for an even count it is the average of the two middle values. An O(log(m + n)) partition search is possible, but any correct method within the limits is accepted.

Implement median_of_two(first, second).

Input

first: A sorted list. second: A sorted list.

Output

Return the median.

Ràng buộc

0 ≤ lengths ≤ 100,000; the combined length is at least 1

Ví dụ

Ví dụ 1
Đầu vào:
first = [1, 3]
second = [2]

Kết quả mong đợi:
expected = 2.0
Đầu vào:
std::vector<long long> first = {1, 3};
std::vector<long long> second = {2};

Kết quả mong đợi:
double expected = 2.0;
Đầu vào:
long[] first = new long[] {1, 3};
long[] second = new long[] {2};

Kết quả mong đợi:
double expected = 2.0;

Giải thích

Combined: [1, 2, 3]; the middle value is 2.

Ví dụ 2
Đầu vào:
first = [1, 2]
second = [3, 4]

Kết quả mong đợi:
expected = 2.5
Đầu vào:
std::vector<long long> first = {1, 2};
std::vector<long long> second = {3, 4};

Kết quả mong đợi:
double expected = 2.5;
Đầu vào:
long[] first = new long[] {1, 2};
long[] second = new long[] {3, 4};

Kết quả mong đợi:
double expected = 2.5;

Giải thích

Combined: [1, 2, 3, 4]; (2 + 3) / 2 = 2.5.

Hướng tiếp cận

Hãy tự thử trước, sau đó mở từng gợi ý một.

Gợi ý 1

Thứ tự gộp lại là quan trọng, nhưng không cần trộn hết nếu bạn tìm trực tiếp được điểm chia giữa.

Gợi ý 2

Tìm một partition sao cho nửa trái chứa đúng các phần tử ở giữa phía thấp hơn và mọi giá trị bên trái không lớn hơn mọi giá trị bên phải.

Gợi ý 3

Xử lý cẩn thận mảng rỗng và cả tổng độ dài lẻ/lẻ, vì median có thể lấy từ một hay hai giá trị giữa.

Độ phức tạp mong đợi

thời gian O(log(min(m, n))), bộ nhớ phụ O(1)

Tham khảo

Thử thách này đã được điều chỉnh cho CodeUtility. Hãy làm theo đề bài và các ràng buộc ở trên.

Học hỏi từ người khác

Giải pháp cộng đồng

Chưa có giải pháp nào được chia sẻ. Hãy giải thử thách này để đăng giải pháp đầu tiên.