Trong thử thách đơn giản này, bạn được cung cấp một mảng đầu vào Lgồm các số nguyên không âm và số lượng thùng blớn hơn 0 nhưng không quá độ dài L. Mã của bạn phải trả về một mảng mới Mcó độ dài bvà đã làm hỏng mảng đó L. Điều này là dễ dàng nhất để giải thích với các ví dụ.
L = [1,0,5,1]và b = 2trả lại M = [1,6].
L = [0,3,7,2,5,1]và b = 3trả lạiM = [3,9,6].
Cho đến nay, rất đơn giản. Tuy nhiên trong câu hỏi bnày không nhất thiết phải chialen(L) . Trong trường hợp này, thùng cuối cùng sẽ chỉ có ít số hơn để tạo ra nó.
Mỗi thùng ngoại trừ có thể là thùng cuối cùng phải có cùng số lượng đóng góp vào tổng số của nó. Thùng cuối cùng phải không có nhiều số đóng góp cho nó hơn các thùng khác. Thùng cuối cùng phải có càng nhiều số đóng góp cho nó càng tốt theo các quy tắc khác.
L = [0,3,7,2,5,1]và b = 4trả lại M = [3,9,6,0]. M = [10,8,0,0]không phải là một đầu ra chấp nhận được vì thùng thứ ba không có số lượng tên đóng góp cho nó dưới dạng thùng 1và 2.
L = [0,3,7,2,5]và b = 2trả lại M = [10,7]. M = [3, 14]không phải là một đầu ra chấp nhận được vì thùng cuối cùng sẽ có 3các yếu tố đóng góp cho nó nhưng thùng đầu tiên chỉ có 2.
L = [1,1,1,1,1,1,1]và b = 3trả lạiM = [3,3,1].
Như một quy tắc cuối cùng, mã của bạn phải chạy trong thời gian tuyến tính.
Bạn có thể sử dụng bất kỳ ngôn ngữ hoặc thư viện nào bạn thích và có thể giả sử đầu vào được cung cấp theo bất kỳ cách nào bạn thấy thuận tiện.
Nó chỉ ra rằng có một số đầu vào không thể được giải quyết. Ví dụ [1,1,1,1,1]và b=4. Mã của bạn có thể xuất bất cứ thứ gì nó thích cho những đầu vào đó.
your code must run in linear time- Tôi sẽ tìm thấy bất kỳ thuật toán nào không tuân theo điều này một cách tự nhiên khá kỳ lạ