Tôi đã xem qua một câu hỏi hay trong khi chuẩn bị cho một số cuộc phỏng vấn lập trình.Tìm khoảng thời gian tiểu học trong khoảng thời gian chồng chéo
Cho một tập hợp các khoảng thời gian có thể chồng chéo, bạn cần phải viết một hàm để trả về tất cả các khoảng thời gian chính giữa chúng. Ví dụ: nếu bạn được cung cấp khoảng thời gian như danh sách các cặp sau: {{1,5}, {3,10}, {5,11}, {15,18}, {16,20}}, thì bạn cần để trả lại những điều sau:
{{1,3}, {3,5}, {5,10}, {10,11}, {15,16}, {16,18}, {18,20 }}
Lưu ý những điều sau trong câu trả lời ở trên:
- khoảng {11,15} được bỏ qua trong các câu trả lời vì nó là không tồn tại trong đầu vào.
- Khoảng cách {1,5} từ đầu vào đã được chia thành {1,3}, {3,5} trong câu trả lời vì điểm bắt đầu "3" được xác định trong {3,10} trong đầu vào cắt khoảng thời gian thành hai khoảng thời gian tiểu học.
Phương pháp chữ ký trong Java:
List<Pair<Integer, Integer>> generateElementaryIntervals(List<Pair<Integer, Integer> intervals)
Một trong những giải pháp mà tôi tưởng tượng là để tách các đầu vào thành các tập không giao nhau, và sau đó một O đơn giản (NlogN) loại trên tất cả các số trong mỗi bộ không giao nhau sẽ mang lại câu trả lời. Có cách nào hiệu quả hơn để làm điều đó không?
câu hỏi của bạn là gì? –
Bạn không hiểu điều gì? – Kowshik
Tôi hiểu khá rõ, nhưng bạn chưa đặt câu hỏi. Không có dấu hỏi ở bất cứ đâu trong bài đăng của bạn. Bạn có muốn một giải pháp trong Java? Bạn chỉ muốn một ý tưởng làm thế nào để tiếp cận nó? Bạn đã nghĩ về nó và bị treo lên trên một điểm cụ thể? Tôi không biết. –