Nhiệm vụ trong thử thách này là đưa các yếu tố của một mảng vào các thùng thời gian. Đầu vào sẽ là một mảng không giảm các số nguyên dương biểu thị thời gian của các sự kiện và một số nguyên biểu thị kích thước của mỗi thùng. Hãy để chúng tôi bắt đầu với một ví dụ. Chúng tôi gọi mảng đầu vào A
và mảng đầu ra O
.
`A = [1,1,1,2,7,10]` and `bin_size = 2`.
`O = [4,0,0,1,1]`.
Tại sao ? Với a bin_size = 2
, chúng ta sẽ có các khoảng sau : (0,2], (2,4], (4,6], (6,8], (8,10]
, trong đó bốn mục (1,1,1,2)
nằm trong khoảng đầu tiên (0,2]
, không có mục nào trong khoảng thứ hai và thứ ba, một 7
trong khoảng (6,8]
và một 10
trong khoảng (8,10]
.
Mã của bạn nên xem xét từng khoảng thời gian bin_size
bắt đầu từ 0
và đếm xem có bao nhiêu số A
trong mỗi số. Bạn phải luôn bao gồm đầu bên phải của một khoảng trong một thùng để trong ví dụ trên 2
được bao gồm trong số đếm 4
. Mã của bạn sẽ chạy trong thời gian tuyến tính bằng tổng độ dài của đầu vào và đầu ra.
Ví dụ khác:
`A = [1,2,7,12,15]` and `bin_size = 5`.
`O = [2, 1, 2]`.
`A = [1,2,7,12,15]` and `bin_size = 3`.
`O = [2,0,1,1,1]`.
Bạn có thể cho rằng đầu vào và đầu ra có thể được cung cấp ở bất kỳ định dạng nào bạn thấy thuận tiện. Bạn có thể sử dụng bất kỳ ngôn ngữ và thư viện nào bạn thích.
bin_size
, chúng ta có thực sự nên xử lý chúng không? Có vẻ như hầu hết các câu trả lời đều có, nhưng nếu vậy, sẽ rất tốt nếu thêm một trường hợp thử nghiệm cho kịch bản này để tránh nhầm lẫn.
0
được phép? Vì vậy, trở về[2,0,1,1,1,0]
thay vì[2,0,1,1,1]
?