คุณควรเขียนโปรแกรมหรือฟังก์ชั่นที่รับรายการจำนวนเต็มที่แตกต่างกันเป็นอินพุตและเอาต์พุตหรือส่งกลับจำนวนการเกิดขึ้นของหมายเลขอินพุตในปิรามิดหมายเลขคว่ำด้านล่างดังต่อไปนี้
เริ่มต้นจากรายการต้นฉบับในทุกขั้นตอนเราสร้างรายการใหม่ที่มีค่าสูงสุดของตัวเลขที่อยู่ติดกันทุกคู่ (เช่น5 1 2 6
กลายเป็น5 2 6
) เราหยุดเมื่อมีเพียงหนึ่งหมายเลขในรายการ
ปิรามิดเต็มรูปแบบสำหรับ5 1 2 6
คือ
5 1 2 6
5 2 6
5 6
6
จำนวนผลลัพธ์ที่เกิดขึ้นคือ3 1 2 4
( 5 1 2 6
ตามลำดับ)
อินพุต
- รายการจำนวนเต็มหนึ่งรายการขึ้นไปโดยไม่มีการซ้ำซ้อน (เช่น
1 5 1 6
ไม่ถูกต้อง)
เอาท์พุต
- รายการของจำนวนเต็มบวก
i
องค์ประกอบ TH ของรายการคือจำนวนของการเกิดขึ้นของi
การป้อนตัวเลขจำนวนวันในปิรามิด
ตัวอย่าง
อินพุต => เอาท์พุท
-5 => 1
8 4 => 2 1
5 9 7 => 1 4 1
1 2 3 9 8 6 7 => 1 2 3 16 3 1 2
6 4 2 1 3 5 => 6 4 2 1 3 5
5 2 9 1 6 0 => 2 1 12 1 4 1
120 5 -60 9 12 1 3 0 1200 => 8 2 1 3 16 1 4 1 9
68 61 92 58 19 84 75 71 46 69 25 56 78 10 89 => 2 1 39 2 1 27 6 5 1 6 1 2 14 1 12
นี่คือรหัสกอล์ฟเพื่อให้รายการที่สั้นที่สุดชนะ
ตัวต่อโบนัส: คุณสามารถแก้ปัญหาได้O(n*log n)
ทันเวลาหรือไม่?