การเพิ่มพีระมิด Upside-Down เป็นกระบวนการของการบันทึกรายการของตัวเลขและเพิ่มเข้าด้วยกันติดต่อกันจนกว่าคุณจะไปถึงหมายเลขหนึ่ง
เมื่อกำหนดหมายเลข2, 1, 1
แล้วจะเกิดกระบวนการต่อไปนี้:
2 1 1
3 2
5
5
ปลายนี้ในจำนวน
งานของคุณ
ให้ด้านขวาของพีระมิด Upside-Down (เรียงจากน้อยไปมาก) เขียนโปรแกรมหรือฟังก์ชั่นที่จะส่งคืนรายการเดิม
New Extra Challenge : ลองทำสิ่งนี้ในเวลาน้อยกว่า O (n ^ 2)
ตัวอย่าง
f([5, 2, 1]) => [2, 1, 1]
f([84,42,21,10,2]) => [4,7,3,8,2]
หมายเหตุ: ปิรามิด Upside-Down จะไม่ว่างเปล่าและจะประกอบด้วยจำนวนเต็มบวกเท่านั้น
Try doing this in less than O(n)
แน่นอนว่ามันเป็นไปไม่ได้ที่จะจัดสรรอาร์เรย์ขนาด n หรือเปลี่ยนรายการ O (n) ในมันเร็วกว่าความซับซ้อน O (n)?