ภารกิจในการท้าทายนี้คือการใส่องค์ประกอบของอาร์เรย์ลงในถังขยะเวลา อินพุตจะเป็นอาร์เรย์จำนวนเต็มบวกที่ไม่ลดลงซึ่งแสดงเวลาของเหตุการณ์และจำนวนเต็มซึ่งแทนขนาดของแต่ละ bin ให้เราเริ่มด้วยตัวอย่าง เราเรียกอาร์เรย์อินพุทและเอาท์พุทอาร์เรย์AO
`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]?