ในการท้าทายแบบนี้คุณจะได้รับการป้อนข้อมูลอาร์เรย์L
ของจำนวนเต็มไม่เป็นลบและจำนวนของถังขยะb
มากกว่า 0 L
แต่ไม่เกินความยาวของ รหัสของคุณจะต้องส่งคืนอาเรย์ใหม่M
ที่มีความยาวb
และอาเรย์L
นั้นได้ถูกรวมเข้าด้วยกัน นี่คือตัวอย่างที่อธิบายได้ง่ายที่สุด
L = [1,0,5,1]
และผลตอบแทนb = 2
M = [1,6]
L = [0,3,7,2,5,1]
และผลตอบแทนb = 3
M = [3,9,6]
จนถึงตอนนี้ง่ายมาก อย่างไรก็ตามในคำถามนี้ไม่จำเป็นต้องมีการแบ่งb
len(L)
ในกรณีนี้ถังขยะสุดท้ายจะมีตัวเลขน้อยกว่าในการสร้าง
แต่ละ bin ยกเว้นอาจเป็นอันสุดท้ายต้องมีจำนวนตัวเลขเท่ากันซึ่งมีผลต่อจำนวนทั้งหมด ถังขยะสุดท้ายจะต้องไม่มีตัวเลขที่มีส่วนร่วมมากกว่าถังขยะอื่น ถังขยะสุดท้ายจะต้องมีตัวเลขจำนวนมากที่มีส่วนร่วมให้มากที่สุดภายใต้กฎอื่น ๆ
L = [0,3,7,2,5,1]
และผลตอบแทน b = 4
ไม่ได้มีการส่งออกได้รับการยอมรับว่าเป็นถังที่สามไม่ได้มีจำนวนชื่อของตัวเลขที่เอื้อต่อการเป็นถังขยะและM = [3,9,6,0]
M = [10,8,0,0]
1
2
L = [0,3,7,2,5]
และผลตอบแทน b = 2
ไม่ได้มีการส่งออกได้รับการยอมรับว่าเป็นถังที่ผ่านมาจะมีองค์ประกอบที่เอื้อต่อการได้ แต่ครั้งแรกที่มีเพียงM = [10,7]
M = [3, 14]
3
2
L = [1,1,1,1,1,1,1]
และผลตอบแทนb = 3
M = [3,3,1]
ตามกฎสุดท้ายรหัสของคุณจะต้องทำงานในเวลาเชิงเส้น
คุณสามารถใช้ภาษาหรือไลบรารี่ที่คุณชอบและสามารถสันนิษฐานได้ว่าอินพุทนั้นมีให้ในแบบที่คุณสะดวก
ปรากฎว่ามีปัจจัยการผลิตบางอย่างที่ไม่สามารถแก้ไขได้ ตัวอย่างและ[1,1,1,1,1]
b=4
รหัสของคุณสามารถส่งออกสิ่งที่มันชอบสำหรับอินพุตเหล่านั้น
your code must run in linear time
- ฉันจะหาอัลกอริทึมที่ไม่ทำตามนี้ค่อนข้างแปลกประหลาด