Giả sử, chúng ta có n số điểm là (x, y). Vùng thẳng đứng là vùng được kéo dài vô hạn dọc theo trục y. Chúng ta phải tìm ra khu vực thẳng đứng giữa hai điểm sao cho không có điểm nào khác nằm trong khu vực đó và là điểm rộng nhất.
Vì vậy, nếu đầu vào là pts =[[10,9], [11,11], [9,6], [11,9]], thì đầu ra sẽ là 1.
Các khu vực màu đỏ và xanh lam là tối ưu và không có điểm nào bên trong chúng.
Để giải quyết vấn đề này, chúng tôi sẽ làm theo các bước sau -
-
sắp xếp các điểm trong danh sách
-
đối với tôi trong phạm vi từ 1 đến kích thước pts, hãy thực hiện
-
trả về giá trị lớn nhất là (pts [i, 0] - pts [i - 1, 0])
-
Ví dụ
Hãy cùng chúng tôi xem cách triển khai sau để hiểu rõ hơn
def solve(pts): pts.sort() return max(pts[i][0] - pts[i - 1][0] for i in range(1, len(pts))) print(solve([[10,9],[11,11],[9,6],[11,9]]))
Đầu vào
[[10,9],[11,11],[9,6],[11,9]]
Đầu ra
1