Cho hai mảng A
và B
độ dài n. A
được sắp xếp tăng dần và B
được sắp xếp giảm dần. Tìm chỉ mục i
mà "sản phẩm" A[i]^2 + B[i]^2
tối thiểu.Tìm tối thiểu A [i]^2 + B [i]^2 khi A và B được sắp xếp
Tôi cần giải pháp trong O(log(n))
là độ phức tạp mong muốn.
Ví dụ trường hợp:
>>> A
[0, 4, 10, 12, 17, 28, 31, 32, 35, 39]
>>> B
[39, 34, 34, 31, 27, 23, 19, 11, 3, 2]
Đây là "sản phẩm" được giảm thiểu bằng i = 4
>>> [A[i]**2 + B[i]**2 for i in range(10)]
[1521, 1172, 1256, 1105, 1018, 1313, 1322, 1145, 1234, 1525]
>>> min(range(10), key=lambda i: A[i]**2 + B[i]**2)
4
Mã nào bạn có cho đến thời điểm này? Ngoài ra, suy nghĩ đầu tiên của tôi là O (logn) là không thể vì bạn sẽ phải xem xét mọi phần tử của mỗi mảng. –
Giải pháp tuyến tính cho vấn đề đó rất dễ dàng, như bạn đã nói. Nhiệm vụ này được bao gồm trong gói tìm kiếm nhị phân, vì vậy tôi nghĩ rằng O (logn) là mong muốn, nhưng có lẽ đối số của bạn là đúng sự thật. Nhưng tại sao nhiệm vụ này được kết nối với binsearch? – Michocio
Có thể có điều gì đó đặc biệt về thực tế là A và B được sắp xếp theo cách của chúng. Tất cả các số trong A và B có dương tính không? –