Trong thử thách đơn giản này, bạn được cung cấp một mảng đầu vào L
gồm các số nguyên không âm và số lượng thùng b
lớ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 M
có độ dài b
và đã 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 = 2
trả lại M = [1,6]
.
L = [0,3,7,2,5,1]
và b = 3
trả lạiM = [3,9,6]
.
Cho đến nay, rất đơn giản. Tuy nhiên trong câu hỏi b
nà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 = 4
trả 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 1
và 2
.
L = [0,3,7,2,5]
và b = 2
trả 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ó 3
cá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 = 3
trả 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ạ