Tôi có một danh sách các yếu tố, trong đó mỗi phần tử là một dãy số nguyên không âm. Tôi muốn lọc danh sách theo cách mà chỉ những khoảng cách không bị ràng buộc lớn nhất được tách ra. Và tôi muốn làm điều này theo cách O(n)
với vòng lặp đơn. Danh sách này sẽ luôn được sắp xếp theo số nguyên khởi đầu của mỗi dãy. Phần tử phạm vi được bao gồm có thể xảy ra trước hoặc sau phần tử phạm vi kèm theo trong danh sách.lọc ra các yếu tố danh sách với O (n) thời gian phức tạp
Ví dụ:
Giả danh sách mà tôi có là {[0-12],[5-15],[5-20],[10-20],[11-30],[25-42],[28-40]}
. Trong danh sách này, dao động [5-15]
và [10-20]
sụp đổ trong vòng [5-20]
nhiều vì vậy tôi cần phải loại bỏ chúng. Tương tự, yếu tố phạm vi [28-40]
bị loại bỏ vì nằm trong phạm vi [25-42]
. Tôi muốn thực hiện việc lọc này bằng cách sử dụng một vòng lặp đơn để đạt được độ phức tạp thời gian O(n)
.
Nó sẽ có thể đạt được điều này? Nếu không, cách tốt nhất để thực hiện lọc với độ phức tạp hơn O(n)
là gì. Một giải pháp trong Java sẽ là tuyệt vời.
Bạn đảm bảo những gì về thứ tự mà danh sách sẽ được trình bày cho bạn trong ví dụ của bạn, nó được sắp xếp theo 'bắt đầu, kết thúc' - sẽ luôn như vậy? Bạn muốn làm gì với các phạm vi chồng chéo một phần, ví dụ: '1-6, 3-8'? – AakashM
Các yếu tố trong danh sách được sắp xếp chỉ bằng cách bắt đầu phạm vi. Chồng chéo một phần không được lọc ra. –
Liên quan: http://stackoverflow.com/q/23887686/1225328 – sp00m