Đưa ra một danh sách các phạm vi ngày r
làm đầu vào, đầu ra hoặc trả về bất kỳ phạm vi nào không tìm thấy trong r
.
Vì lợi ích của ví dụ này, đầu vào sẽ có YYYY-MM-DD
định dạng.
Giả sử bạn có ba phạm vi ngày:
[2019-01-01, 2019-02-01]
[2019-02-02, 2019-04-05]
[2019-06-01, 2019-07-01]
Bạn có thể thấy rằng có một khoảng cách ở giữa 2019-04-05
và 2019-06-01
.
Đầu ra sẽ là khoảng cách đó: [2019-04-06, 2019-05-31]
Quy tắc
- Đầu vào và đầu ra có thể ở bất kỳ định dạng ngày hoặc bộ sưu tập hợp lý nào, miễn là phù hợp.
- Giả sử đầu vào không được đặt hàng.
- Phạm vi ngày của bạn không cần phải có
[latest, earliest]
, nhưng nó phải tuân theo quy tắc 2. - Giả sử không có ngày trùng lặp trong đầu vào
Các trường hợp thử nghiệm:
Đầu vào: [[2019-01-01, 2019-02-01],[2019-02-02, 2019-04-05],[2019-06-01, 2019-07-01]]
Đầu ra: [[2019-04-06, 2019-05-31]]
Đầu vào: [[2019-01-01, 2019-02-01],[2018-02-02, 2018-04-05],[2019-06-01, 2019-07-01]]
Đầu ra: [[2018-04-06, 2018-12-31], [2019-02-02, 2019-05-31]]
Đầu vào: [[2019-01-01, 2019-02-01],[2019-02-02, 2019-03-02],[2019-03-03, 2019-07-01]]
Đầu ra: []
Đầu vào: [[2019-01-01, 2019-02-01], [2019-11-02, 2019-11-20]]
Đầu ra: [[2019-02-02, 2019-11-01]]
Đầu vào: [[2019-01-01, 2019-02-01],[2019-02-03, 2019-04-05]]
Đầu ra: [[2019-02-02, 2019-02-02]]
hoặc[[2019-02-02]]
YYYY-MM-DD
vì định dạng hiện tại vừa xa lạ với nhiều người, và thậm chí còn khó phân tích hơn do sử dụng các ngày nhỏ trong tháng 12.