Tôi có một câu hỏi phỏng vấn mà tôi dường như không thể tìm ra. Với một mảng có kích thước N, hãy tìm tập con của kích thước k sao cho các phần tử trong tập hợp con nằm xa nhau nhất. Nói cách khác, tối đa hóa khoảng cách tối thiểu giữa các phần tử.Tìm tập hợp con với các phần tử xa nhau nhất với nhau
Example:
Array = [1,2,6,10]
k = 3
answer = [1,6,10]
Cách bruteforce yêu cầu tìm tất cả tập hợp con có kích thước k là theo hàm mũ trong thời gian chạy.
Một ý tưởng tôi đã có là lấy giá trị đồng đều cách nhau từ mảng. Những gì tôi có ý nghĩa bởi đây là
- Lấy 1 và yếu tố cuối cùng
- tìm sự khác biệt giữa chúng (trong trường hợp này 10-1) và chia rằng bằng k ((10-1)/3 = 3)
- di chuyển 2 con trỏ vào trong từ cả hai đầu, chọn ra các phần tử +/- 3 từ lựa chọn trước đó của bạn. Vì vậy, trong trường hợp này, bạn bắt đầu từ 1 đến 10 và tìm các phần tử gần nhất với 4 và 7. Sẽ là 6.
Điều này dựa trên những yếu tố cần được lan truyền đồng đều nhất có thể. Tôi không có ý tưởng làm thế nào để chứng minh nó hoạt động/không hoạt động. Nếu bất cứ ai biết làm thế nào hoặc có một thuật toán tốt hơn xin vui lòng chia sẻ. Cảm ơn!
Đây là một giải pháp thông minh. Tôi không thể chắc chắn nó là dễ dàng nhưng nó làm việc cho một vài trường hợp thử nghiệm của tôi. – citysushi
thực sự, tôi khá chắc chắn điều này làm việc – citysushi
làm thế nào chúng ta có thể tìm thấy tập hợp con thực tế? chúng ta có các phần tử b/w khoảng cách tối đa của tập hợp con đó trong X [N] [i], trong đó i là kích thước của tập hợp con? –