ภารกิจในการท้าทายนี้คือการใส่องค์ประกอบของอาร์เรย์ลงในถังขยะเวลา อินพุตจะเป็นอาร์เรย์จำนวนเต็มบวกที่ไม่ลดลงซึ่งแสดงเวลาของเหตุการณ์และจำนวนเต็มซึ่งแทนขนาดของแต่ละ bin ให้เราเริ่มด้วยตัวอย่าง เราเรียกอาร์เรย์อินพุทและเอาท์พุทอาร์เรย์A
O
`A = [1,1,1,2,7,10]` and `bin_size = 2`.
`O = [4,0,0,1,1]`.
ทำไม ? ด้วยbin_size = 2
เราจะมีช่วงเวลาต่อไปนี้: (0,2], (2,4], (4,6], (6,8], (8,10]
ที่สี่รายการ(1,1,1,2)
อยู่ในช่วงแรก(0,2]
ไม่มีใครในช่วงที่สองและสามซึ่งเป็นหนึ่ง7
ในช่วงเวลา(6,8]
และเป็นหนึ่งในช่วงเวลา10
(8,10]
รหัสของคุณควรพิจารณาทุกช่วงเวลาที่มีความยาวbin_size
เริ่มต้น0
และนับจำนวนที่A
มีในแต่ละตัว คุณควรมีปลายด้านขวามือของช่วงเวลาในถังเพื่อให้ในตัวอย่างข้างต้นจะถูกรวมอยู่ในจำนวนของ2
4
รหัสของคุณควรทำงานในเวลาเชิงเส้นในผลรวมของความยาวของอินพุตและเอาต์พุต
ตัวอย่างเพิ่มเติม:
`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]`.
คุณสามารถสันนิษฐานได้ว่าอินพุตและเอาต์พุตสามารถให้ในรูปแบบที่คุณสะดวก คุณสามารถใช้ภาษาและห้องสมุดที่คุณต้องการ
bin_size
เราควรจัดการกับสิ่งเหล่านี้หรือไม่? ดูเหมือนว่าคำตอบส่วนใหญ่จะทำ แต่ถ้าเป็นเช่นนั้นจะเป็นการดีถ้าเพิ่มกรณีทดสอบสำหรับสถานการณ์นี้เพื่อป้องกันความสับสน
0
อนุญาตให้ใช้เอาต์พุตที่มีการต่อท้ายหรือไม่ ดังนั้นการกลับมา[2,0,1,1,1,0]
แทน[2,0,1,1,1]
?