Thử thách này được lấy cảm hứng rất nhiều từ bài viết Stack Overflow này .
Thử thách
Đưa ra một nhóm khách hàng về thời điểm họ vào phòng và khi họ thoát ra, hãy xác định (các) khoảng thời gian khi phòng có số lượng người tối đa. Độ phân giải thời gian nên là phút.
Ví dụ, nếu có ba khách hàng 8 - 10
, 9 - 11
, 10 - 12
, thì câu trả lời đúng sẽ là 9 - 11
; trong khoảng thời gian này, có hai khách hàng trong phòng, đây là số lượng lớn nhất có thể.
Đầu vào
Đầu vào sẽ là một danh sách các cặp ở một số hình thức. Đó có thể là danh sách gồm 2 bộ, danh sách có độ dài chẵn với các phần tử xen kẽ, v.v., bất kỳ định dạng đầu vào hợp lý nào. Thời gian có thể được đưa ra ở bất kỳ định dạng hợp lý nào, trong thời gian 12 hoặc 24 giờ. Bạn cũng có thể nhập thời gian là số phút sau nửa đêm.
Đầu ra
Đầu ra phải là một danh sách các cặp ở một số dạng, nhưng đầu ra chặt chẽ hơn. Đầu ra không thể là một danh sách phẳng, nó phải là một danh sách gồm 2 bộ hoặc một danh sách các danh sách, v.v. Thời gian có thể được xuất ra ở bất kỳ định dạng hợp lý nào, trong thời gian 12 hoặc 24 giờ. Bạn cũng có thể xuất thời gian dưới dạng số phút sau nửa đêm.
Ví dụ
input
output
INPUT
08:00 - 10:00
09:00 - 11:00
10:00 - 12:00
OUTPUT
09:00 - 11:00
INPUT
08:20 - 09:20
09:00 - 09:10
08:00 - 09:30
08:50 - 10:40
OUTPUT
09:00 - 09:10
INPUT
08:00 - 10:00
09:00 - 10:00
09:30 - 11:00
OUTPUT
09:30 - 10:00 # The output is not always in the input list
INPUT
00:00 - 02:00
01:00 - 03:00
04:00 - 06:00
05:00 - 07:00
OUTPUT # This is the expected output for when there are multiple time ranges with the same "business".
01:00 - 02:00
05:00 - 06:00
Bạn có thể cho rằng lần thứ hai trong một cặp sẽ luôn là sau lần đầu tiên. Khoảng thời gian sẽ không chạy quá nửa đêm.
09:00 - 10:00, 10:00 - 11:00
một đầu ra hợp lệ cho trường hợp thử nghiệm đầu tiên?